강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

5. 공주구하기(큐)

이렇게 구현하면 조금 비효율적인가요?

작성

·

154

0

아래와 같이 구현해보았는데 이러면 pop(idx) 부분에서 리스트가 하나씩 밀리는 연산이 있으니까 비효율적인가요? 강의에서 나온 코드도 pop하고 다시 끝에 붙이니까 비슷한거 같기도해서요. 코드평가한번만 부탁드립니다.

n, k = map(int, input().split())
q = list(range(1, n+1))

cnt = 0
idx = 0
while q:
    cnt += 1
    if cnt == k:
        cand = q.pop(idx)
        cnt = 0
        n -= 1
    else:
        idx = (idx+1) % n

    if not q:
        print(cand)


 

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

리스트는 pop() 하면 밀리는 연산이 있고, deque는 없습니다. 이 문제가 N제한이 300,000만 정도 였다면 큰 속도차이가 납니다.

위에 코드와 제가 deque로 제공한 소스파일과 300000 3 입력을 테스트해 보세요. 

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

질문하기