알고리즘/백준

[백준] 2164번 : 카드2 - JAVA [자바]

DevelopJJong 2022. 6. 14. 19:38

문제

문제 링크 : https://www.acmicpc.net/problem/2164


수도코드 작성

일단 queue를 이용해서 리스트를 하나 만들고

그 리스트들을 for문으로 1~N까지 채워준다.

 Queue에 메소드인 poll을 이용해서 맨 앞에 있는 숫자를 지운다.

그리고 다시 맨 앞에 있는 숫자를 지움과 동시에 뒤에 추가해준다.

이것을 for문으로 1개 남을 때 까지 반복한다.


작성한 코드

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        for (int i = 1; i <= N; i++) {
            queue.add(i);
        }
        while(queue.size()>1) {
            queue.poll();
            queue.add(queue.poll());
        }
        System.out.println(queue.poll());
    }
}

보완할 점 / 헷갈린 점

 

for문 안에 continue를 안 넣어도 자동으로 밑으로 넘어가는 것을 몰라서 계속 continue를 사용했다. 

이번 문제는 그래도 쉽게 풀 수 있었다.