코딩테스트 연습 기록

이종길·2022년 1월 28일
0

코딩테스트 연습

목록 보기
59/128

2022.01.28 35일차

백준 1920번 (수 찾기)

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

나의 풀이

  1. N, N개의 수 M, M개의 수
  2. nArr 오름차순 정렬
  3. 최소값 - 0, 최대값, n - 1, value = 찾는 값, 중간값 = (최소값 + 최대값) / 2
  4. while(최소값 <= 최대값)
  5. answer 배열(m개) 기본값 0, 해당하는 값 나오면 1
  6. nArr[mid] < value -> 최소값 = 중간값 + 1
  7. nArr[mid] > value -> 최대값 = 중간값 + 1
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int N = scanner.nextInt();
        int[] nArr = new int[N];

        for (int i = 0; i < N; i++) {
            nArr[i] = scanner.nextInt();
        }

        Arrays.sort(nArr);

        int M = scanner.nextInt();
        int[] answer = new int[M];

        for (int x = 0; x < M; x++) {
            int value = scanner.nextInt();
            int min = 0;
            int max = N - 1;

            while (min <= max) {
                int mid = (min + max) / 2;

                if (nArr[mid] == value) {
                    answer[x] = 1;
                    break;
                } else if (nArr[mid] < value) {
                    min = mid + 1;
                } else if (nArr[mid] > value) {
                    max = mid - 1;
                }
            }

        }
        for (int i : answer) {
            System.out.println(i);
        }

    }
}

생각하기

  • Set(중복x) - contains 활용해서 풀이 가능
profile
Go High

0개의 댓글

관련 채용 정보