팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (74)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (2)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ArcitecturePattern
  • BFS
  • compose
  • 완전탐색
  • CustomView
  • 이분탐색
  • programmers #프로그래머스
  • 골드
  • binding
  • 정렬
  • programmers
  • mvvm
  • DFS
  • 프로그래머스
  • flutter
  • LEVEL2
  • 하단네비게이션바
  • 해쉬맵
  • 자바
  • 코틀린
  • 안드로이드
  • Android
  • java
  • TestCode
  • Kotlin
  • 의존성 주입
  • 실버
  • 구현
  • 문자열
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[백준] - 암기왕 2776
PS/백준

[백준] - 암기왕 2776

2022. 11. 9. 11:47


https://www.acmicpc.net/problem/2776

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

www.acmicpc.net


  • 입력 값이 최대 1,000,000이기 때문에 시간복잡도가 logN인 이분탐색으로 문제를 해결했다

[Java]

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
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));

        int t = Integer.parseInt(br.readLine());

        while(t-->0){
            ArrayList<Integer> note1 = new ArrayList<>();
            ArrayList<Integer> note2 = new ArrayList<>();

            int ntSize1 = Integer.parseInt(br.readLine());

            StringTokenizer st = new StringTokenizer(br.readLine());
            for(int i=0; i<ntSize1; i++){
                note1.add(Integer.parseInt(st.nextToken()));
            }

            int ntSize2 = Integer.parseInt(br.readLine());

            st = new StringTokenizer(br.readLine());
            for(int i=0; i<ntSize2; i++){
                note2.add(Integer.parseInt(st.nextToken()));
            }

            Collections.sort(note1);

            loopOut:
            for(int num : note2){
                int start = 0;
                int end = note1.size()-1;

                while(start <= end){
                    int mid = (start + end) / 2;

                    if(note1.get(mid) == num){
                        bw.write("1" + "\n");
                        continue loopOut;
                    }else if(note1.get(mid) < num)
                        start = mid+1;
                    else
                        end = mid-1;
                }
                bw.write("0" + "\n");
            }
        }



        bw.flush();
    }


}

 

'PS > 백준' 카테고리의 다른 글

[백준] 영상처리 21938  (0) 2022.11.11
[백준] 문자열 잘라내기 2866  (2) 2022.11.10
[백준] - 키 큰 사람 11292  (0) 2022.11.07
[백준] - 자리배정 10157  (0) 2022.11.06
백준 1753 - 최단 경로 (다익스트라)  (0) 2022.09.20
    'PS/백준' 카테고리의 다른 글
    • [백준] 영상처리 21938
    • [백준] 문자열 잘라내기 2866
    • [백준] - 키 큰 사람 11292
    • [백준] - 자리배정 10157
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바