[백준 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 가 궁금하다면 여기를 클릭 !