본문 바로가기

알고리즘 풀이(JAVA)/백준

[백준] 문제번호 2161 (카드1)(java)

<문제 2161 - 카드1>

[문제]

 

[답안]

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

public class Main {
    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);
        Queue<Integer> queue = new LinkedList<>(); // queue 선언
        StringBuilder sb = new StringBuilder();
        
        int last = -1; // 가장 앞에 있는 데이터를 뒤로 넣을때 쓸 변수
        int n = sc.nextInt(); // 카드의 개수

        for (int i = 1; i <= n; i++) {
            queue.add(i); // 개수만큼 돌면서 queue에 번호 저장
        }

        for (int i = 1; i < n ; i++) { // n만큼 돌면서
            sb.append(queue.peek()+" "); // 가장 앞에 있는 데이터부터 저장(바닥에 버려질 카드)
            queue.poll();// poll을 이용하여 가장 앞의 데이터를 제거
            last = queue.peek(); // 가장앞에 있는데이터를 last에 넣고
            queue.poll(); // 앞에 있는 데이터를
            queue.add(last); // 뒤에 다시 추가
        }

        sb.append(queue.peek()); // 한개만 남았으니까 peek을 이용해서 마지막 카드 번호 더하기
        System.out.println(sb);
    }
}

// 그림 그려서 풀면 더 쉽다! <큐 이용 문제>