import sys
input = sys.stdin.readline
n = int(input())
num = list(range(1,n+1))
for i in range(len(num)-1):
del num[0]
num.append(num[0])
del num[0]
print(num[0])
처음 문제를 보고 작성했던 코드다.
하지만 시간 초과 오류가 나타났고, 구글링을 해본 결과 파이썬의 del 함수의 시간 복잡도가 O(n)이라는 사실을 알 수 있었다.
이후 다음과 같이 코드를 수정한 뒤 문제를 해결 할 수 있었다.
import sys
input = sys.stdin.readline
n = int(input())
num = list(range(1,n+1))
index = 0
for i in range(len(num)-1):
index += 1
num.append(num[index])
index += 1
print(num[index])
del 함수를 제거한 뒤 배열의 현재 인덱스값을 저장하는 변수를 만들어줬다.
코드는 크게 다음과 같은 순서로 동작한다.