본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]1966번 프린터 큐

by 현장 2021. 5. 17.

-코드

for _ in range(int(input())):
    n, m = map(int, input().split())
    num = list(map(int, input().split()))
    a = [0 for i in range(n)]
    a[m] += 1
    r = 0
    while 1:
        if num[0] == max(num):
            r += 1
            if a[0] != 1:
                num.pop(0)
                a.pop(0)
            else:
                print(r)
                break
        else:
            a.append(a.pop(0))
            num.append(num.pop(0))

처음에는 진행을 for문 이후로 못하고 있다가 목표하는 숫자를 목적 값으로 정하고 그 값이 나왔을 경우 while문을 빠져나오게 만들려고 했으나 만들다 보니 마지막 입력에서 같은 수가 나오게 되면 이상한 값이 나올 수 있다는 것을 깨달았습니다. 그래서 찾아보니 다른 리스트를 하나 만들어서 해당하는 위치만 다른 숫자로 만드는 방법이 있어서 채용을 했고 리스트의 처음 값이 max값이 아닌 경우에 첫 번째 값을 뒤로 보내야 하는데 집중을 잘 못했는지 헷갈려서 고민을 많이 하였습니다..