Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 자바 public
- react with typescript
- 자바 if문
- 자바 구구단 출력
- 자바
- 자바 조건문
- react ag grid
- 항해99 2기
- Vue3
- 자바 스캐너
- 정보처리기사실기
- 이클립스 DB연동
- MySQL
- 변수
- 자바 while문
- 자바 삼항연산자
- 타입스크립트
- 자바 반복문
- TypeScript
- 자바 자동캐스팅
- 자바 for문
- Til
- 항해99
- java
- 자바 공배수
- 자바 강제 캐스팅
- 조코딩
- 자바 향상된 for문
- 자바 switch문
Archives
- Today
- Total
뇌 채우기 공간
[백준] 11866 요세푸스 문제 0 파이썬 풀이 (큐, 덱) 본문
코드
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 |