num = int(input())
cards = list(range(1, num+1))
while len(cards) > 1:
cards.pop(0)
cards.append(cards.pop(0))
print(cards[0])
from collections import deque
num = int(input())
cards = range(1, num+1)
dq = deque(cards)
# 카드가 1장 이상일 경우 첫번째 배열 삭제 & 삭제후 첫번째 배열을 마지막 배열에 추가
while len(dq) > 1:
dq.popleft()
dq.append(dq.popleft())
print(dq)
card_string = ' '.join(map(str, dq))
print(card_string[0])
class에서 str로 변환하지 않고 바로 deque의 popleft() 출력
결국 마지막 배열 한개만 남기 때문에 굳이 문자열로 변환해서 출력할 필요가 없었다.
from collections import deque
num = int(input())
cards = range(1, num+1)
dq = deque(cards)
# 카드가 1장 이상일 경우 첫번째 배열 삭제 & 삭제후 첫번째 배열을 마지막 배열에 추가
while len(dq) > 1:
dq.popleft()
dq.append(dq.popleft())
print(dq)
print(dq.popleft())
50만장 카드를 넣을 경우
import time
# 첫 번째 코드
start_time = time.time()
num = int(input())
cards = list(range(1, num+1))
while len(cards) > 1:
cards.pop(0)
cards.append(cards.pop(0))
print(cards[0])
end_time = time.time()
print("첫 번째 코드 실행 시간: ", end_time - start_time)
from collections import deque
import time
# 두 번째 코드
start_time = time.time()
num = int(input())
cards = range(1, num + 1)
dq = deque(cards)
while len(dq) > 1:
dq. popleft()
dq.append(dq.popleft())
print(dq.popleft())
end_time = time.time()
print("두 번째 코드 실행 시간: ", end_time - start_time)