알고리즘

[백준, 파이썬, 1835번] 카드

hminor 2024. 2. 14. 11:22

풀이

  • 역순으로 생각해야 풀 수 있는 문제라고 생각했기에
  • 카드 배열을 reverse() 한 다음
  • result 라는 배열을 계속 한 칸씩 밀어낼 수 있도록 하기 위해 deque를 사용
  • 이후 카드 배열을 하나씩 추가한 다음
  • cnt에 맞게 rotate를 통해 뒤에서 앞으로 한 칸씩 밀어내어 해결

 

from collections import deque

n = int(input())
cnt = n
li = [i for i in range(1,n+1)]
li.reverse()

result = deque([])

for i in li:
    result.appendleft(i)
    for _ in range(cnt): result.rotate(1)
    cnt -= 1
print(*result)