반응형
https://www.acmicpc.net/problem/11866
내 답안
from collections import deque
N, K = map(int, input().split())
q= deque([i for i in range(1, N + 1)])
print('<', end='')
while q:
for i in range(K - 1):
q.append(q.popleft())
print(q.popleft(), end='')
if q:
print(', ', end='')
print('>')
queue 의 맨 앞에 있는 원소를 k-1번 뒤로 보내는걸 반복해준다.
그리고 k번째에 popleft() 를 통해 그 원소를 삭제해주고 바로 문자열로 출력해주는 프로그램을 짰다.
쉽게 보여준다면
- deque([1, 2, 3, 4, 5, 6, 7])
- deque([2, 3, 4, 5, 6, 7, 1])
- deque([3, 4, 5, 6, 7, 1, 2])
- deque([4, 5, 6, 7, 1, 2])
.
.
.
.
.
이런 과정을 반복한다.
https://www.acmicpc.net/problem/1158
이 문제는 N의 경우가 5000개로 커졌을 때인데 위의 답을 적어도 시간 초과 없이 잘 된다.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 11053번 가장 긴 증가하는 부분 수열 파이썬 (8) | 2022.03.15 |
---|---|
백준 1935번 후위 표기식 2 파이썬 (0) | 2022.03.14 |
백준 1918번 후위 표기식 파이썬 (0) | 2022.03.12 |
백준 2748번 피보나치 수 2 파이썬 (0) | 2022.03.11 |
백준 1977번 완전제곱수 파이썬 (0) | 2022.03.10 |