38 lines
1.2 KiB
Python
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)이므로 이 자료구조를 활용해서 상황을 그대로 구현하면 된다.
|
|
|
|
규칙을 좀 찾아보면 먼저 홀수를 다 버리고, 짝수만 남은 상태에서 또 지워나가는 규칙을 찾을 수 있어서 수학적으로 풀 수 있을 것 같지만,
|
|
이 문제를 서비스 자체라고 생각하면 조건이 어떻게 바뀔지 모르는 상태에서 규칙을 찾아서 그 규칙에만 맞는 코드를 짜는 것보다는
|
|
시뮬레이션쪽으로 설계함으로써 사람이 하기 힘든 반복 작업을 자동화하는 것이 더 목적성이 맞다고 생각한다.
|
|
""" |