[python] 백준 1158번

hyeo71·2023년 5월 21일
0

백준

목록 보기
5/24

https://www.acmicpc.net/problem/1158

문제 : 요세푸스

제한

  • 시간 제한 : 2초
  • 메모리 제한 : 256MB

풀이

  1. 1차
import sys
from collections import deque

n, k = map(int, sys.stdin.readline().split())
queue = deque()
result = ""

# queue에 1~n까지 저장
for i in range(1, n + 1):
    queue.append(i)

for _ in range(n):
	# k-1 번째까지 수를 queue의 마지막으로 이동
    for _ in range(k - 1):
        queue.append(queue.popleft()) 
    
    # k 번째 수를 queue에서 삭제 및 결과값에 추가
    result += str(queue.popleft())


print("<", ", ".join(result), ">", sep="")
예제 입력을 대입할 경우 올바른 예제 출력값이 출력되지만 숫자가 두 자리 수로 넘어가는
경우 출력 시 두 자리 숫자 문자열이 모두 나눠져서 출력된다.
따라서 result를 list로 바꿔 코드를 수정한다.
  1. 2차
import sys
from collections import deque

n, k = map(int, sys.stdin.readline().split())
queue = deque()
result = []

# queue에 1~n까지 저장
for i in range(1, n + 1):
    queue.append(i)


for _ in range(n):
    # k-1 번째까지 수를 queue의 마지막으로 이동
    for _ in range(k - 1):
        queue.append(queue.popleft())

    # k 번째 수를 queue에서 삭제 및 결과값에 추가
    result.append(queue.popleft())

print("".join(str(result)).replace("[", "<").replace("]", ">"))

0개의 댓글