[백준 1920] 수 찾기 (Java)
2021. 5. 3. 13:30ㆍ알고리즘 (Algorithm)
문제

1. 좋지 않은 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
public static void main(String[] args) throws IOException {
//== Input
int arrCnt = Integer.parseInt(br.readLine());
int[] arr = new int[arrCnt];
st = new StringTokenizer(br.readLine());
for(int i=0; i<arrCnt; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int compCnt = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] compArr = new int[compCnt];
for(int i=0; i<compCnt; i++) {
compArr[i] = Integer.parseInt(st.nextToken());
}
//== Logic
for(int i=0; i<compCnt; i++) {
boolean flag = true;
for(int j=0; j<arrCnt; j++) {
if (arr[j] == compArr[i]) {
System.out.println(1);
flag = false;
break;
}
}
if (flag)
System.out.println(0);
}
}
}
2. 좋은 코드
참고
위 1번도 맞았다는 결과를 받았지만, 수를 찾는데 최적화 된 알고리즘인 Binary Search 로 푸는게 좋다.
아래 사진을 보면 시간 측면에서 차이가 많이 나는걸 확인할 수 있다.

이분탐색 Binary Search 가 궁금하다면 여기를 클릭 !
'알고리즘 (Algorithm)' 카테고리의 다른 글
| [백준 10816] 숫자 카드 2 (Java) (0) | 2021.05.04 |
|---|---|
| [백준 21610] 마법사 상어와 비바라기 (Java) - 삼성 기출 문제 (0) | 2021.04.30 |
| [백준 1655] 가운데를 말해요 (Java) (0) | 2021.04.26 |
| [백준 2468] 빙산 (Java) (0) | 2021.03.31 |
| [백준 2468] 안전 영역 (Java) DFS / BFS (0) | 2021.03.30 |