[BOJ Python] 1835번 카드
카테고리: BaekJoon
태그: Deque Simulation Python
카드
📃 문제
1부터 N까지의 숫자가 적힌 카드가 있다. 찬유는 이 카드를 가지고 마술을 하려 한다. 마술을 하는 순서는 다음과 같다.
먼저 1부터 N까지의 숫자가 적힌 카드에서 첫 번째 카드를 가장 뒤로 옮긴다. 그러고 나서 첫 번째 카드를 책상 위에 올려놓는다. 그런데 그 카드는 1이 되어야 한다. 그리고 남은 카드 중에서 첫 번째 카드를 가장 뒤로 옮기고, 또 가장 앞에 있는 카드를 가장 뒤로 옮긴다.(2번 반복) 그리고 가장 앞에 있는 카드를 책상 위에 올려놓는다. 그런데 그 카드는 2가 되어야 한다. 또 남은 카드 중에서 첫 번째 카드를 가장 뒤로 옮기고… (3번 반복) 그리고 가장 앞에 있는 카드를 책상위에 올려놓는데 그것은 3이 된다. 또 남은 카드 중에서 첫 번째 카드를 가장 뒤로 옮기고.. (4번 반복) 그리고 가장 앞에 있는 카드를 책상 위에 올려놓는데 그것은 4이다. 위 과정을 계속 반복하여 N번 카드만 남을 때 까지 반복한다. 위와 같은 카드를 하려면 미리 카드의 순서를 알고 있어야 한다. 카드의 개수 N이 주어져 있을 때 위의 마술을 하기 위한 카드의 초기 순서를 구하는 프로그램을 작성하시오.
📬 입력
첫째 줄에 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1000)
📭 출력
첫 번째 줄부터 N번째 줄까지 차례로 카드의 순서를 출력한다.
🙆🏻♂️ 문제 답안
- 내가 제출한 답
import sys from collections import deque n = int(sys.stdin.readline().rstrip()) queue = deque() for i in reversed(range(1, n+1)): queue.appendleft(i) if len(queue) > 1: cnt = 0 while True: if cnt == i: break queue.appendleft(queue[-1]) # print(queue) queue.pop() # print(queue) cnt += 1 elif len(queue) == 1: continue print(*queue)
🙋🏻♂️ 개인 공부&기록 블로그입니다. 오류나 틀린 부분이 있을 경우
비난 및 비판 보다는 댓글을 통해 이슈작성 부탁드립니다. 🙋🏻♂️
댓글 남기기