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

0

코딩테스트

목록 보기
9/37
post-thumbnail

<문제>


문제 출처 : https://www.acmicpc.net/problem/2164

<나의 풀이>

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

public class 카드게임 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 1. 값 세팅
        int N = sc.nextInt();
        Queue<Integer> queue = new LinkedList<Integer>();
        // 2. 큐에 값 삽입
        for (int i=1; i<= N; i++){
            queue.offer(i);
        }
        // 3. 카드게임 돌리기
        while (queue.size()>1){ // 큐에 값이 하나만 남을 때 까지 반복
            queue.poll();   // 첫 번째 카드 버림
            queue.offer(queue.poll());  // 두번째 카드 맨 뒤로 넣기
        }
        System.out.println(queue.peek());   // 큐의 맨 마지막 값 꺼내 출력
    }
}

<핵심 개념>

큐! Queue!
이전에 풀던 문제들 보단 조금 쉬운 느낌이었다. 큐를 알면 금방 풀 수 있을 것 같다. 그리고 이 문제를 풀면서 알게 된건데 다른 사람들의 풀이에서 누구는 .add()를 누구는 .offer()를 쓰길래 찾아보니 que에 값을 삽입, 추출, 삭제 할 때 메소드가 두 개씩 존재한다는 것을 알았다. 궁금해서 공식문서를 찾아봤는데 '작업 실패 시 반환하는 값'을 기준으로 예외를 발생시키는 메소드와 특별한 값을 반환하는 메소드로 나뉘더라. 이렇게 새로 알게된 내용은 따로 큐 포스팅에서 정리해 봐야겠다.

profile
두둥탁 뉴비등장

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

뛰어난 글이네요, 감사합니다.

답글 달기