Files
baekjoon-study/workbook_8708/silver/2164-s4.py
2026-02-23 11:14:50 +09:00

38 lines
1.2 KiB
Python

# 카드2
import sys
from collections import deque
input = sys.stdin.readline
def solution():
n = int(input().rstrip())
cards = deque([i for i in range(1, n+1)])
drop_count = 0
while drop_count < n-1:
cards.popleft()
drop_count += 1
cards.append(cards.popleft())
print(cards.pop())
return
solution()
"""
걸린 시간: 13분
시간 복잡도: deque에 넣고 빼는 작업은 O(1)이므로, 전체 시간복잡도는 O(n)이다.
해설: deque에 넣고 진행할 경우 앞, 뒤에 대한 추가, 삭제 연산이 O(1)이므로 이 자료구조를 활용해서 상황을 그대로 구현하면 된다.
규칙을 좀 찾아보면 먼저 홀수를 다 버리고, 짝수만 남은 상태에서 또 지워나가는 규칙을 찾을 수 있어서 수학적으로 풀 수 있을 것 같지만,
이 문제를 서비스 자체라고 생각하면 조건이 어떻게 바뀔지 모르는 상태에서 규칙을 찾아서 그 규칙에만 맞는 코드를 짜는 것보다는
시뮬레이션쪽으로 설계함으로써 사람이 하기 힘든 반복 작업을 자동화하는 것이 더 목적성이 맞다고 생각한다.
"""