[python] 백준 19258번

도덩이의 개발 일지·2024년 9월 26일

백준

목록 보기
102/131
post-thumbnail

안녕하세요 !

오늘은 백준 - 카드 2 문제를 가져왔습니다.


문제 설명


해결 방법

문제를 해결한 방법은 다음과 같습니다.

  1. 수를 입력받고 1~N까지 큐에 넣어줍니다.
  2. 반복을 하며 만약 큐의 요소가 1개일 때 반복을 멈춥니다.
  3. 큐에서 요소를 제거하고 한번 더 제거한 뒤 마지막에 제거한 요소를 다시 큐에 넣어줍니다.
  4. 1개만 남은 큐의 요소를 출력합니다.

  1. 수를 입력받고 1~N까지 큐에 넣어줍니다.
n = int(sys.stdin.readline().strip())
for i in range(1, n+1):
    queue.append(i)

  1. 반복을 하며 만약 큐의 요소가 1개일 때 반복을 멈춥니다.
while 1:
    if len(queue) == 1:
        break

  1. 큐에서 요소를 제거하고 한번 더 제거한 뒤 마지막에 제거한 요소를 다시 큐에 넣어줍니다.

종료 조건이 2번 들어가는 이유는 어느 코드 후에 큐의 요소가 1개가 되는지 알 수 없기 때문입니다.

    queue.popleft()
    if len(queue) == 1:
        break
    queue.append(queue.popleft())

  1. 1개만 남은 큐의 요소를 출력합니다.
print(queue.popleft())

전체 코드

import sys
from collections import deque
queue = deque()

n = int(sys.stdin.readline().strip())

for i in range(1, n+1):
    queue.append(i)

while 1:
    if len(queue) == 1:
        break
    queue.popleft()
    if len(queue) == 1:
        break
    queue.append(queue.popleft())

print(queue.popleft())
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글