백준_11866 (요세푸스 문제_큐_요세푸스 순열)

RostoryT·2022년 6월 23일
0

Stack Queue

목록 보기
14/17

옛날에 못풀었음

  • 블로그 코드 답
''' 백준 1158 - 블로그 답 (rotate사용 안함) '''
from collections import deque

result = []

n, k = map(int, input().split())
deq = deque([i+1 for i in range(n)])

while deq:
    for i in range(k-1):
        deq.append(deq.popleft()) # k번째 전까지 rotate시킴
    result.append(deq.popleft())

print("<", end="")
for i in result[:len(result)-1]:
    print(i, end = ", ")

print(result[-1], end="")
print(">")

블로그 답 참고해서 내가 푼 - rotate()사용 ->틀린답

''' 백준 1158 - 블로그 답 참고 (rotate() 사용) '''
''' 계속 틀렸다는데 왜 틀린지 모르겠음 !! '''
from collections import deque

result = []

n, k = map(int, input().split())
deq = deque([i+1 for i in range(n)])

while deq:
    deq.rotate(-2)
    result.append(deq.popleft())

print("<", end="")
for i in result[:len(result)-1]:
    print(i, end = ", ")
print(result[-1], end="")
print(">")

2달 후 다시 내 힘으로 풀어봄 -> 맞음

''' 이후 2달 후에 내 힘으로 품 '''
''' 얘도 틀렸다는데 왜틀렸지? ''' ''' => 틀렸던 이유 찾았다!!!!'''
from collections import deque

result = []
i, j = map(int,input().split())
deq = deque([x+1 for x in range(i)])

while deq:
    deq.rotate(-j+1)          # 여기서 K값에 따라 로테이션 돌아야 하는데 "-2"로 고정시켜서 틀렸었음
    result.append(deq.popleft())


print("<" + str(result)[1:-1] + ">")


1달 후 내가 푼 (10분컷) - deque.rotate() 를 잊지말자

'''내가푼'''
from collections import deque

result = []
n, k = map(int,input().split())

que = deque([a+1 for a in range(n)])

while que:
    que.rotate(-k+1)
    result.append(que.popleft())
print("<", ", ".join(map(str,result)), ">", sep="")


profile
Do My Best

0개의 댓글