[알고리즘/백준] 1920번 : 수 찾기(Java)

2025. 4. 26. 20:39·Algorithms & Education/알고리즘
문제 1920번 : 수 찾기
문제링크 https://www.acmicpc.net/problem/1920
난이도 S4
언어 Java
분류 이분 탐색 | 자료구조, 정렬, 이분 탐색, 해시를 활용한 집합과 맵

 

 

📌 최종 정답 코드

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

            // N 입력
            int n = Integer.parseInt(br.readLine());
            int[] arr = new int[n];

            // N개의 수 입력
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 0; i < n; i++) {
                arr[i] = Integer.parseInt(st.nextToken());
            }

            // 정렬
            Arrays.sort(arr);

            // M 입력
            int m = Integer.parseInt(br.readLine());

            // M개의 수 입력 후 이진 탐색
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < m; i++) {
                int target = Integer.parseInt(st.nextToken());
                if (binarySearch(arr, target)) {
                    bw.write("1\n");
                } else {
                    bw.write("0\n");
                }
            }

            // flush & close
            bw.flush();
            bw.close();
            br.close();
        }

        private static boolean binarySearch(int[] arr, int target) {
            int left = 0;
            int right = arr.length - 1;

            while (left <= right) {
                int mid = (left + right) / 2;

                if (arr[mid] == target) {
                    return true;
                } else if (arr[mid] < target) {
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }

            return false;
        }
}


📌 구해야 하는 정답

- M개의 줄에 답을 출력. 존재하면 1을, 존재하지 않으면 0을 출력

 

 

📌 코드 설계하기

  1. 문제의 Input을 받습니다.
  2. A 배열을 정렬합니다.
  3. 배열 안에 값이 존재하는지 확인하는 이분 탐색을 구현합니다.
  4. M개의 수들에 대해 이분 탐색을 진행해 A 배열 안에 존재하는지 확인합니다.

'Algorithms & Education > 알고리즘' 카테고리의 다른 글

[알고리즘] 21일 챌린지 후기 - 새싹반  (2) 2025.04.28
[알고리즘/백준] 2417번 : 정수 제곱근(Java)  (1) 2025.04.27
[알고리즘/백준] 1904번 : 01타일(Java)  (1) 2025.04.25
[알고리즘/백준] 2747번 : 피보나치 수(Java)  (1) 2025.04.24
[알고리즘/백준] 10815번 : 숫자카드(Java)  (1) 2025.04.23
'Algorithms & Education/알고리즘' 카테고리의 다른 글
  • [알고리즘] 21일 챌린지 후기 - 새싹반
  • [알고리즘/백준] 2417번 : 정수 제곱근(Java)
  • [알고리즘/백준] 1904번 : 01타일(Java)
  • [알고리즘/백준] 2747번 : 피보나치 수(Java)
min_sol
min_sol
  • min_sol
    ෆ스누피가 찰리찰리해ෆ
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Programming Languages (51)
        • JAVA (40)
        • C# (11)
      • Database (11)
        • oracle (7)
        • postgresql (3)
        • mysql (0)
      • Data & AI (5)
        • 빅데이터 (1)
        • AI (4)
      • Tools & Collaboration (30)
        • GitHub (10)
        • RPA (20)
      • GIS (1)
      • Web Development (58)
        • Spring (11)
        • JSP (11)
        • Front (1)
        • Vue (14)
        • PyQt (10)
        • Next.js (4)
      • Networking & Security (14)
        • TCP_IP (5)
        • 보안 (9)
      • Mobile (6)
        • 안드로이드스튜디오 (6)
      • Others (4)
        • 일상 (2)
        • 2021 (2)
      • Algorithms & Education (58)
        • 알고리즘 (52)
        • 세미나 | 교육 (5)
        • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    jsp
    알고리즘
    RPA
    PyQt5
    연습문제
    자동화
    명품자바에센셜
    스윙
    spring
    vue.js
    자료구조
    Java
    자바
    VUE
    생능출판
    이클립스
    백준
    PyQt
    코딩테스트
    계산기
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[알고리즘/백준] 1920번 : 수 찾기(Java)
상단으로

티스토리툴바