Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 2164번- '카드2' (PYTHON 풀이) 본문
문제:

이번 문제는 설명이 잘 나와있어서 굳이 추가 설명은 안해도 될 것 같다. 바로 문제 풀이로 넘어가겠다!
풀이:
import sys
from collections import deque
N = int(sys.stdin.readline())
q = deque()
for i in range(1, N+1):
q.append(i)
for i in range(len(q)):
if len(q) == 1:
break
q.popleft()
q.append(q[0])
q.popleft()
print(*q)
답은 위와 같다.
우선 처음에 sys, deque 안쓰고 그냥 list로 풀었는데 시간초과가 떠서 둘 다 적용시켜서 다시 풀었다. 어제 문제에서 deque가 뭔지는 설명했으니 추가 설명은 하지 않겠다.
해당 카드 놀이의 규칙은 다음과 같다. 첫번째 수는 무조건 삭제, 그 다음 숫자는 맨 뒤에 추가한 뒤 삭제
이러한 규칙을 생각하면서 순서대로 코드에 적용시켜주면 위 코드처럼 나온다. 좀 더 자세하게 설명해보자면, 사용자로부터 카드 놀이할 수를 입력받고 이를 순서대로 전부 q에 넣는다. 예를 들어 5를 입력받았다면 '1,2,3,4,5' 이런 식으로 숫자가 담아질 것이다.
그 후 q의 길이가 1일 경우엔 무조건 출력을 해야하므로 종료 조건을 걸어주고, 그 외에는 앞서 말한 규칙과 같이 처음 자리 수는 삭제하고, 삭제한 뒤에 남은 숫자 중 첫번째를 끝 자리에 넣어준 뒤 옮긴 숫자는 삭제하는 코드를 짜준다.
역시 규칙을 알아내면 코드 쓰는 건 어려운 일이 아닌 것 같다!
'CODING 💻' 카테고리의 다른 글
| 백준 11866번- '요세푸스 문제 0' (PYTHON 풀이) (0) | 2025.10.27 |
|---|---|
| 백준 12789번- '도키도키 간식드리미' (PYTHON 풀이) (0) | 2025.10.26 |
| 백준 18258번- '큐 2' (PYTHON 풀이) (3) | 2025.10.24 |
| 백준 4949번- '균형잡힌 세상' (PYTHON 풀이) (0) | 2025.10.23 |
| 백준 9012번- '괄호' (PYTHON 풀이) (0) | 2025.10.22 |
