JAVA
BAEKJOON(백준) Queue - 2164번 JAVA / PYTHON CODE
violetisme
2023. 1. 29. 20:00
JAVA CODE
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//큐 선언
Deque<Integer> q = new LinkedList<>();
//N장의 카드
int N = Integer.parseInt(br.readLine());
//q에 수 집어넣기
for(int i=0; i<N; i++)
q.offer(i+1);
//q의 사이즈가 1일 때까지
while(q.size() > 1) {
//첫번째 카드는 땅에 버리고
q.remove();
//버린 카드의 다음 카드는 버리면서 맨뒤로 보냄
q.addLast(q.poll());
}
//한 장 남은 카드 출력
System.out.println(q.peek());
}
}
PYTHON CODE
(시간 초과 에러)
import sys
#queue list
queue = []
#N입력
N = int(sys.stdin.readline().strip())
#list에 숫자 삽입
for i in range(1, N+1) :
queue.append(i)
while True:
if(len(queue) == 1):
break;
queue.append(queue[1])
queue.remove(queue[0])
queue.remove(queue[0])
print(queue.pop())
(맞는 코드) - 큐 import 하여 이용
import sys
from collections import deque
n = int(sys.stdin.readline().rstrip())
cards = [x for x in range(1,n+1)]
cards = deque(cards)
def solution(cards):
while len(cards) > 1:
cards.popleft()
cards.append(cards.popleft())
print(cards[0])
solution(cards)