오늘 시험을 보고나니 이분탐색과 너무 서먹서먹한 것 같아서,,
이럼 안된다!!! 라는 생각에 문제를 풀어보았다😂
이분탐색 알고리즘에 해당하는 문제 중에서 나름 쉬운 난이도로 골라서 풀었는데,,
너무 서먹하다,,,,,,
N개의 정수중에서 정수X가 포함되어 있는지 확인하는 간단한 문제였다.
public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(bf.readLine()); int[] A = new int[N]; StringTokenizer st = new StringTokenizer(bf.readLine(), " "); for(int i=0; i<N; i++) { A[i] = Integer.parseInt(st.nextToken()); } Arrays.sort(A); int M = Integer.parseInt(bf.readLine()); int[] arr = new int[M]; StringTokenizer st1 = new StringTokenizer(bf.readLine(), " "); for(int i=0; i<M; i++) { arr[i] = Integer.parseInt(st1.nextToken()); } for(int i=0; i<M; i++){ int answer = 0; int start = 0; int end = N-1; while (start <= end){ int mid = (start+end)/2; if(A[mid] == arr[i]){ answer = 1; } if(A[mid]>arr[i]){ end = mid-1; }else{ start = mid+1; } } System.out.println(answer); } }
요즘 프로그래머스로 문제를 풀었더니
백준에서 입력 값을 적어주는 부분마저 헷갈려서 구글선생님께 물어물어 풀어보았다,,
코드 중에 반절이 입력에 대한 내용인데,, 좀 더 간단하고 좋은 코드로 바꿀 수 없을까하는 생각이 든다😅
일단 이분탐색에 맞게 처음과 끝을 변수로 선언해주고, 가운데 값부터 비교하는 방법으로 구현해보았다.
입력 값을 적어주고 정렬을 해두었기 때문에 중간 값과 비교하여 앞부분인지 뒷부분인지 판단하여 탐색 속도를 높이는,,, 느낌이다.
이분탐색,, 문제를 풀어보며 좀 친해지도록 노력해야겠다😤