본문 바로가기
알고리즘/문제풀이

[JAVA]백준 - 11866.요세푸스 문제 0

by 겅아링 2020. 11. 23.
반응형

www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

 

풀이 > 

Queue 를 사용하여
큐의 맨 앞의 요소를(poll) 맨 뒤로 넣어준다(offer) k-1번 반복
k번째에 요소를 꺼내고 출력한다
Queue에 남은 요소가 없을 때 까지 반복
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Baekjoon1920 {
    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 n = Integer.parseInt(br.readLine());
        int[] a = new int[n];
        StringTokenizer stN = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(stN.nextToken());
        }
        // 이분탐색을 하기위해 오름차순으로 정렬하기
        Arrays.sort(a);

        int m = Integer.parseInt(br.readLine());
        StringTokenizer stM = new StringTokenizer(br.readLine());

        for (int i = 0; i < m; i++) {
            // 이분 탐색
            int index = Arrays.binarySearch(a, Integer.parseInt(stM.nextToken()));
            if (index < 0) bw.append(String.valueOf(0));
            else bw.append(String.valueOf(1));
            bw.append("\n");
        }

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

 

반응형