티스토리 뷰

Algorithm/Baekjoon

[백준] 2164번 카드2(JAVA)

다교이 2022. 7. 17. 22:31
728x90

문제

- 1부터 N까지의 번호가 붙은 N장의 카드

- 카드는 1번부터 N번까지 순서대로 놓여 있음

- 카드가 한 장 남을 때까지 아래 내용 반복

   1. 제일 위에 있는 카드 버리기

   2. 그 다음 제일 위에 있는 카드 제일 아래 있는 카드 밑으로 옮기기

- 제일 마지막에 남게 되는 카드 출력

 

해결방법

queue에 순서대로 카드를 넣고, 맨 위 카드는 버리고 그 다음 카드를 맨 뒤로 다시 넣는 과정을 반복하였다. 카드가 한 장 남았을 경우에는 해당 카드를 출력할 수 있도록 하였다.

 

코드

import java.io.*;
import java.util.*;

class Main{
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());		// 카드 장수 입력 받기
        LinkedList<Integer> card = new LinkedList<>();		// 카드 queue

        for(int i = 1; i<=N; i++){
            card.add(i);					// 카드 한 장씩 queue에 넣기
        }

        while(true){
            if(card.size() == 1){			// 카드가 1장 남았을 때에는
                System.out.println(card.poll());	// 해당 카드 출력
                break;
            }
            card.poll();			// 맨 위 카드 버리기
            card.add(card.poll());		// 그 다음 카드 맨 뒤로 보내기
        }

        br.close();
    }
}
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 2292번 벌집(JAVA)  (0) 2022.07.17
[백준] 2231번 분해합(JAVA)  (0) 2022.07.17
[백준] 2108번 통계학(JAVA)  (0) 2022.07.14
[백준] 1978번 소수 찾기(JAVA)  (0) 2022.07.14
[백준] 1966번 프린터 큐(JAVA)  (0) 2022.07.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday