Algorithm/BOJ
[Silver V/JAVA] 10815 ์ซ์์นด๋
carsumin
2024. 11. 18. 14:24
https://www.acmicpc.net/problem/10815

- ์ด์งํ์์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์ด์ ์ผ์ผ์ด ๋น๊ตํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
- ์ด์งํ์(Binary Search)๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ ํ๋ ๋ฌธ์ (https://marginata.tistory.com/150)
- ํ์ด 1์ System.out.print() ๋ฅผ ์ด์ฉํ์ฌ ์ผ์ผ์ด ์ถ๋ ฅ์ ํ๊ณ , ํ์ด 2๋ StringBuilder๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ์ ํ๋ค. ์ฑ๋ฅ๋ฉด์์ StringBuilder๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋น ๋ฅด๋ค.
ํ์ด 1
import java.io.*;
import java.util.*;
public class Main{
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//์๊ทผ์ด๊ฐ ๊ฐ์ง ์นด๋
int N = Integer.parseInt(br.readLine());
arr = new int[N];
StringTokenizer st = null;
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
//์ด์งํ์์ ์ํ ์ ๋ ฌ
Arrays.sort(arr);
//๋น๊ตํ ์นด๋
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<M; i++){
int result = binarySearch(Integer.parseInt(st.nextToken()));
if(result != -1) System.out.print(1 + " ");
else System.out.print(0 + " ");
}
}
//์ด์งํ์
private static int binarySearch(int target){
int left = 0;
int right = arr.length-1;
int mid;
while(left <= right){
mid = (left+right)/2;
if(arr[mid] < target) left = mid+1;
else if(arr[mid] > target) right = mid-1;
else return mid;
}
return -1;
}
}
ํ์ด 2
import java.io.*;
import java.util.*;
public class Main{
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//์๊ทผ์ด๊ฐ ๊ฐ์ง ์นด๋
int N = Integer.parseInt(br.readLine());
arr = new int[N];
StringTokenizer st = null;
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
//์ด์งํ์์ ์ํ ์ ๋ ฌ
Arrays.sort(arr);
//๋น๊ตํ ์นด๋
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
//StringBuilder๋ก ์ถ๋ ฅ
StringBuilder sb = new StringBuilder();
for(int i=0; i<M; i++){
int result = binarySearch(Integer.parseInt(st.nextToken()));
sb.append(result).append(" ");
}
System.out.println(sb.toString().trim());
}
//์ด์งํ์
private static int binarySearch(int target){
int left = 0;
int right = arr.length-1;
int mid;
while(left <= right){
mid = (left+right)/2;
if(arr[mid] == target) return 1; //๊ฐ์ด ์์
else if(arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return 0; //๊ฐ์ด ์์
}
}
