백준 1158. 요세푸스 (with. Python) - 큐 문제에서 deque()는 필수 별꼬리 땅땅

SSO·2022년 5월 9일
1

1158. 요세푸스

💡 아이디어

정말 요로코롬 생각해보다가 번뜩 떠오른 큐!! k-1개 빼놓고 다시 뒤에 붙이고, k번째를 pop()해가면 되지 않을까~~ 아이디어는 정답!! 하지만 내 코드.. 리스트로 구현하고 바로 오류 빠밤 ~.~..

n, k = map(int, input().split())

# 1~n번 사람
people = [i for i in range(1,n+1)]
result = []

while people:
  for _ in range(k-1):
    people.append(people.pop(0))

  result.append(people.pop(0))
  
print("<", end="")
for i in range(len(result)-1):
  print(result[i], end=", ")
print(str(result[len(result)-1])+">")

👆 리스트로 활용한 코드

시간초과 떠버렸다~~ 는 것 ㅠ.ㅠ 그럼 뭐 더 빠른 deque() 써야지 하핳 ...성공!! 오예~

💡 풀이

알고리즘 플로우는 아이디어대로 구현하면 된다!
근데 여기서 조심해야 할 점은 리스트로 쓰면 시간초과 떠버리니까 큐를 사용해야 하면 deque 쓰는 버릇을 들여야겠다는 것-! 왕창 빨라~~
from collections import deque 기억하자 ㅇㅅㅇ!!


💡 코드

from collections import deque

n, k = map(int, input().split())

# 1~n번 사람
people = deque()
for i in range(1, n+1): people.append(i)
result = []

while people:
  for _ in range(k-1):
    people.append(people.popleft())

  result.append(people.popleft())

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

리스트 출력할 때 같이 출력되는 대문자([ ])!! replace로 문자 대체할 수도 있었다. 완전 신기 >.< deque() 열심히 쓰기.. replace 함수 기억하기.. 메모..
profile
쏘's 코딩·개발 일기장

0개의 댓글