코딩테스트 연습 스터디 진행중 입니다. ✍✍✍
Notion : https://www.notion.so/1c911ca6572e4513bd8ed091aa508d67
문제
https://www.acmicpc.net/problem/10815
[나의 풀이]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Correct {
// 이분 탐색
static void binarySearch(int[] mycard, int x, BufferedWriter bw) throws IOException {
int low = 0;
int high = mycard.length - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (mycard[mid] == x) {
bw.write("1 ");
return;
}
else if (x < mycard[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
bw.write("0 ");
}
public static void main(String[] args) throws NumberFormatException, IOException {
// 입력 받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] mycard = new int[N];
for (int i = 0; i < N; i++) {
mycard[i] = Integer.parseInt(st.nextToken());
}
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] check = new int[M];
for (int i = 0; i < M; i++) {
check[i] = Integer.parseInt(st.nextToken());
}
// 이진 탐색을 실행하기 위해서는
// 자료구조가 정렬 되어있어야함
Arrays.sort(mycard);
for (int i = 0; i < M; i++) {
binarySearch(mycard, check[i], bw);
}
bw.flush();
}
}
이분 탐색 문제입니다!
이분탐색 알고리즘은 'Do it 자료구조와 함께 배우는 알고리즘 입문' 1회독하며 배운 개념이라 수월하게 풀 수 있었습니다!💯💯💯
감사합니다!🐕🐕🐕
👍