문제

내가 작성한 코드 (틀림)
import sys
input = sys.stdin.readline
from collections import deque
# N, K 입력
n, k = map(int, input().split())
queue = deque([i for i in range(1, n +1)])
cnt = 0
result = []
while queue:
cnt += 1
if cnt == k:
result.append(queue.popleft())
else:
queue.append(queue.popleft())
> 흠... 이건 맞췄어야 됐는디... ㅜㅜ
> 화이팅!!
참고한 코드
from collections import deque
queue = deque()
answer = []
n, k = map(int, input().split())
for i in range(1, n+1):
queue.append(i)
while queue:
for i in range(k-1):
queue.append(queue.popleft())
answer.append(queue.popleft())
print("<",end='')
for i in range(len(answer)-1):
print("%d, "%answer[i], end='')
print(answer[-1], end='')
print(">")
> 참고한 블로그
https://hongcoding.tistory.com/41
[백준] 11866번 요세푸스 문제 0 (Python 파이썬)
www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 설명 1번부터 N번까지 N명의 사람이 원을 이..
hongcoding.tistory.com
내가 해석한 코드 설명
from collections import deque
queue = deque()
answer = []
> 큐 함수를 사용하기 때문에 deque 모듈을 불러오고 queue 변수에 deque 함수를 사용하였고, answer는 최종 결과를 추출하기 위한 변수입니다.
n, k = map(int, input().split())
for i in range(1, n+1):
queue.append(i)
> n, k는 입력될 변수를 받기 위한 map(int, input().split()) 로 코드를 작성하였습니다.
> 반복문을 사용하여 n개의 길이만큼 queue 변수의 값을 받는 것입니다.
> 저는 틀렸었지만 위와 같은 방식이 아니라, list compression 방법을 적용하였습니다.
while queue:
for i in range(k-1):
queue.append(queue.popleft())
answer.append(queue.popleft())
> while문을 사용하여 queue의 값이 존재할 때까지 반복문을 진행하는 것입니다. 이렇게 하는 이유는 k번째 데이터를 추출해야하기 때문입니다.
> 여기서는 for문을 사용하여 k번째전까지 데이터를 popleft() 함수를 사용하여 내보내는 동시에 append 함수를 사용하여 다시 queue 변수에 넣는 작업을 하였습니다.
> 다시 for문을 빠져나와 answer 변수에 k번째 값을 popleft() 함수로 queue 변수에 빼준 후 append 함수로 answer 변수에 원하는 값을 넣는 작업을 하는 것입니다.
> 저는 cnt 변수를 사용하여 k번째 값이 되는 것을 확인하기 위한 변수를 만들었었는데, 이 방법이 더 좋은 거 같습니다!!
print("<",end='')
for i in range(len(answer)-1):
print("%d, "%answer[i], end='')
print(answer[-1], end='')
print(">")
> 솔직히 이 작업을 어떻게 해야할지 모르겠어서.. .포기했었는데 ㅜㅜ
> print("<", end='') 작업을 통해 print로 다음 칸으로 넘어가는 것이 아닌 계속 그 줄에 있기 위해 end = '' 로 적용해주었습니다.
> 그리고 반복문을 사용하여 k번째 값들의 모음인 answer 변수를 print("d, "%anser[i], end=' ) 로 코드를 작성하였습니다.
매우 좋은 반복인 거 같다!! %를 활용하여 쉽게 print 할 수 있는 것!!
'Coding > 백준' 카테고리의 다른 글
| [10773번] 제로 with Python (0) | 2022.07.26 |
|---|---|
| [1475번] 구현 - 방 번호 with Python (0) | 2022.07.25 |
| [1012번] 유기농 배추 with Python (★) (0) | 2022.07.25 |
| [1072번] 게임 (★) (0) | 2022.07.25 |
| [10971번] 외판원 순회 2 with Python (★) (0) | 2022.07.22 |