[백준] 카드2

이찬혁·2023년 12월 28일

알고리즘

목록 보기
2/72

백준 온라인 저지 2164번 - 카드2

문제를 읽어보니 큐 자료구조의 선입선출 성질을 활용하여 간단하게 구현할 수 있는 문제였다.

문제의 시간 제한(2초)과 데이터의 크기(1 ≤ N ≤ 500000)를 보니 시간 복잡도의 제약도 크지 않은 단순한 문제였다.

QueueCardGame.java

package com.example.Etc;

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

/**
 * 카드게임2
 * 1. 큐의 front 삭제
 * 2. 다음 원소를 삭제 후 맨 뒤에 삽입
 * 3. 큐에 하나의 원소만 남아있을 경우 해당 원소 리턴
 */
public class QueueCardGame {
    public int printLastCard(int queueSize) {
        Queue<Integer> queue = new LinkedList<>();

        // 카드 생성
        for(int i = 1; i <= queueSize; i++) {
            queue.add(i);
        }

        while(queue.size() != 1) {
            // 제일 상단의 카드 제거
            queue.poll();
            int front = queue.poll();
            queue.add(front);
        }

        return queue.peek();
    }
}

QueueCardGameTest.java

ppackage com.example.Etc;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class QueueCardGameTest {
    @Test
    public void queueCardGameTest() {

        QueueCardGame cardGame = new QueueCardGame();
        int result = cardGame.printLastCard(6);

        assertEquals(4, result);
    }
}

스택과 큐

profile
나의 개발로그

0개의 댓글