Koala - 15기/코딩테스트 준비 스터디

[백준/python] 1966: 프린터

ㄱㅈㅅㅇ 2024. 7. 21. 16:26

1966번: 프린터 큐 (acmicpc.net)

t=int(input())
for _ in range(t):
    n,m=map(int,input().split())
    #문서의개수n, 0~ 몇번째문서m
    arr=list(map(int,input().split()))
    for i in range(n):
        if (i==m):
            arr[i] = (arr[i],1)
        else:
            arr[i] = (arr[i],0)
    cnt=1
    while (len(arr)!=0):
        x=arr.pop(0)
        flag="T"
        for i in range(n - cnt):
            if (arr[i][0] > x[0]): flag = "F"

        if(flag == "F"):
            arr.append(x)
        else:
            if (x[1] == 1):
                print(cnt)
                break
            cnt += 1

단순히 중요도 순 대로 출력된다고 생각했는데 그럼 틀린다. 우선 같은 중요도일 때도 고려해야하므로 그냥 시키는 대로 코드를 짠다. 테스트 케이스별로  입력받아서 내가 알고 싶은 애를 특정해야하므로 for문을 돌려서 1을 준다. 그리고 전부 나올때까지 반복한다. 맨 앞을 팝하고 플래그 트루로 초기화한다. for문을 지금 있는 개수만큼만 돌려서 지금 팝한애보다 중요한 애가 있으면 플래그 f 로 바꾼다. 만약 플래그 F라면 다시 팝한걸 넣어주고 아니라면 그냥 둔다. 이때 만약 지금 팝한 애가 내가 알고싶던 애면 cnt를 출력한다.