https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
> 큐 활용
다음 그림은 문제에 나와있는 예시를 대상으로 생각한 아이디어를 그려본 것이다.
1번에서 k-1번, 즉 시작 번호에서 두 번 이동해야하는데 이동하면서 거쳐가는 숫자들은 모두 뒤로 빼준다(<- popleft와 append 활용). 두 번 이동한 후 가장 첫번째에 나와있는 숫자를 결과 리스트에 추가해준다. 리스트에 추가한 후 3을 큐에서 빼주면(<-popleft 활용) 4에서부터 다시 2번 이동하고 이동하면서 4와 5는 뒤로 빼준다. 그럼 6번이 가장 앞으로 나오고 해당 번호를 결과 리스트에 추가한 후 큐에서 빼준다.
위의 과정을 큐에 모든 원소가 없어질 때 까지 반복한다. 이 과정을 코드로 구현하면 다음과 같다.
'python > 알고리즘 문제풀이' 카테고리의 다른 글
[백준 | 파이썬3] 1966. 프린터 큐- 큐 (0) | 2021.08.05 |
---|---|
[백준 | 파이썬3] 1904.01타일-동적계획법 (0) | 2021.08.05 |
[백준 | 파이썬3] 2667. 단지번호 붙이기-dfs활용 (0) | 2021.08.03 |
[백준 | 파이썬3] 1932. 정수삼각형 (0) | 2021.08.02 |
[백준 | 파이썬3] 2164. 카드2 - 큐 (0) | 2021.08.02 |