폴더 분리
This commit is contained in:
38
workbook_8708/silver/2164-s4.py
Normal file
38
workbook_8708/silver/2164-s4.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# 카드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)이므로 이 자료구조를 활용해서 상황을 그대로 구현하면 된다.
|
||||
|
||||
규칙을 좀 찾아보면 먼저 홀수를 다 버리고, 짝수만 남은 상태에서 또 지워나가는 규칙을 찾을 수 있어서 수학적으로 풀 수 있을 것 같지만,
|
||||
이 문제를 서비스 자체라고 생각하면 조건이 어떻게 바뀔지 모르는 상태에서 규칙을 찾아서 그 규칙에만 맞는 코드를 짜는 것보다는
|
||||
시뮬레이션쪽으로 설계함으로써 사람이 하기 힘든 반복 작업을 자동화하는 것이 더 목적성이 맞다고 생각한다.
|
||||
"""
|
||||
Reference in New Issue
Block a user