BJ 2164 카드2

노그리·2022년 4월 20일
0

문제가 궁금하다면?

내가 시도한 방법

  1. deque를 사용해서
  2. 맨 앞 장을 제거하고,
  3. 그 다음 장은 뽑아서 뒤에 다시 넣는다.
    -> 언제까지??? 2장이 남을 때까지
    (1장이 남았을 때 while문이 순회하면 삭제 연산이 2번 진행되어 IndexError가 발생)
from collections import deque

N = int(input())
q = deque()
q.extend(list(range(1, N+1)))

while len(q) >= 2:
    # 버리기
    q.popleft()
    # 맨 앞장 빼서 맨 뒤로 넣기
    q.append(q.popleft())

print(q.popleft())

후기

  • 일반적인 방법이라고 생각했는데 내 코드의 시간과 가장 시간이 적게 걸리 코드의 차이가 조금 있어서 어떻게 더 줄일 수 있을지 고민을 해봐야겠다. 고민을 하고 나서 그 다음에 다른 사람과의 코드와 내 코드의 차이점과 배울 점을 적어놔야겠다!
profile
자기소개가 싫어요

0개의 댓글