백준|2164번|카드2

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
52/136

문제설명
N을 입력받고 1부터 N까지의 숫자카드를 오름차순 형식으로 쌓았을 때 제일 위에 있는 카드를 바닥에 버리고, 그 카드를 버리고 난 뒤 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 이 동작을 카드가 하나가 남을 때까지 반복했을 때 마지막 남은 카드에 적힌 숫자는 무엇인지 출력하는 문제입니다.

작동 순서
1. N을 입력받고 deque에 1부터 N까지를 역순으로 넣어줍니다.
2. 카드가 한장 남을때까지 deque의 마지막 원소를 삭제하고 그 다음 원소를 deque의 맨앞으로 보내줍니다.
3. 카드가 한장 남았다면 그 카드에 적힌 숫자를 출력합니다.

소스코드

from collections import deque
N = int(input())
deq = deque()
for i in range(N, 0, -1):
    deq.append(i)
while len(deq) > 1:
    deq.pop()
    deq.appendleft(deq.pop())
print(deq[0])

후기
deque를 활용하니 굉장히 쉽게 풀 수 있었습니다. 하지만 다른 분들의 풀이를 보니 deque를 사용하지 않고 수식하나로 해결하신 분들도 계시던데 프로그래밍은 역시 어려운거 같습니다.

profile
INTP 개발자 지망생

0개의 댓글