728x90
2025.02.11 (화)
오늘의 문제: 수 찾기
오늘의 문제 코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 처리
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int m = sc.nextInt();
int[] queries = new int[m];
for (int i = 0; i < m; i++) {
queries[i] = sc.nextInt();
}
// 정렬
Arrays.sort(arr);
// 이진 탐색 결과 계산
for (int query : queries) {
if (binarySearch(arr, query)) {
System.out.println(1);
} else {
System.out.println(0);
}
}
}
public static boolean binarySearch(int[] arr, int target) {
int left = 0, right = arr.length - 1;
// 이진 탐색이 계속 실행될 조건
while (____) {
int mid = (left + right) / 2;
if (____) {
// 이진 탐색에서 타겟을 찾았는지 확인하는 조건
return true;
} else if (____) {
// 타겟 값이 중간 값보다 큰 경우의 조건
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
}
// 이진 탐색이 계속 실행될 조건
1. while (____) {
int mid = (left + right) / 2;
2. if (____) {
// 이진 탐색에서 타겟을 찾았는지 확인하는 조건
return true;
3. } else if (____) {
// 타겟 값이 중간 값보다 큰 경우의 조건
left = mid + 1;
} else {
right = mid - 1;
}
}
1번은 평소에 left < rigth 형태로 이진 탐색을 주로 해서 틀렸다ㅜ
틀리면 이렇게 왜 틀렸는지와 정답도 알려준다!
2번은 타겟이 되었는지 찾는 조건이니깐 c!
3번은 중간값보다 큰 경우이므로 b!
둘째 날도 1번 ❌, 2번 ⭕️, 3번 ⭕️ ㅠㅠ
'Algorithm > 탭고리즘' 카테고리의 다른 글
[탭고리즘] 3일차 (0) | 2025.02.12 |
---|---|
[탭고리즘] 1일차 (0) | 2025.02.12 |
[탭고리즘] 탭고리즘? (0) | 2025.02.12 |