반응형
1158
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
[정답]
1
2
3
4
5
6
7
8
9
10
11
12
|
import sys
N, K = map(int, sys.stdin.readline().split())
a = [i for i in range(1,N+1)]
b = []
c = 0
while a:
c += K-1
if c >= len(a):
c %= len(a)
b.append(str(a.pop(c)))
print('<', ", ".join(b), '>', sep = '')
|
cs |
.
.
.
[풀이]
배열 a에서 c번(index)마다 항목을 삭제(pop)해준다.
pop해서 반환된 값을 b에 추가해준다.
이 때 배열 a에서 값들이 하나씩 삭제되므로
c는 K-1만큼만 증가시켜준다.
c가 배열 a의 길이보다 길어지면
처음으로 돌아가 카운트하는 순환 구조이므로
나머지 연산을 이용하여 c를 줄여준다.
p.s.
index를 계산하는 방법을 사용해야한다.
배열 자체를 pop과 append를 통해서 뗐다 붙였다 풀었더니
시간초과로 실패했다.
반응형
'백준 문제풀이' 카테고리의 다른 글
[백준 : 10699] 파이썬 : 오늘 날짜 (0) | 2022.03.21 |
---|---|
[백준 2530] 파이썬 : 인공지능 시계 (0) | 2022.03.18 |
[백준 11170] 파이썬 : 0의 개수 (0) | 2022.03.15 |
[백준 1292] 파이썬 : 쉽게 푸는 문제 (0) | 2022.03.13 |
[백준 19947] 파이썬 : 투자의 귀재 배주형 (0) | 2022.03.12 |