코드
from collections import deque
n, k = map(int, input().split())
stack = deque([i for i in range(1, n+1)])
print("<", end="")
while len(stack) != 1:
for _ in range(k-1):
stack.append(stack.popleft())
print(stack.popleft(), end=", ")
print(f"{stack.popleft()}>")
풀이
원래 이해가 안됐던 점은
만약에 7 7 이 입력되면
7번째 사람이 죽고 6명 남으면 어떡하지? 라고 생각했는데
그러면 계속 돌면서 7번째 사람을 죽이는 것이다
예를 들어 1 2 3 4 5 6 사람이 있으면 여기서 7번째는 1번이다
stack에 1부터 n번호까지 사람을 넣고
k번째 사람이 맨 왼쪽에 올때까지 stack에 맨 앞에 원소를 꺼내서 맨 뒤에 넣는다
7명이고 3번째 사람을 죽인다고 치면
1 2 3 4 5 6 7 에서
2 3 4 5 6 7 1 을 만들고
3 4 5 6 7 1 2 를 만들어서
맨 앞의 3을 없애면서 print를 한다
이렇게 계속 반복한다.
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 9461 파도반 수열 파이썬 풀이 (동적 계획법) (0) | 2021.06.23 |
---|---|
[백준] 9184 신나는 함수 실행 파이썬 풀이 (동적계획법) (0) | 2021.06.23 |
[백준] 7576 토마토 파이썬 풀이 (BFS) (0) | 2021.06.22 |
[백준] 2667 단지 번호 붙이기 파이썬 풀이 (DFS, BFS) (0) | 2021.06.22 |
[백준] 1260 DFS와 BFS 파이썬 풀이 (0) | 2021.06.21 |