본문 바로가기
> 알고리즘 문제 풀이/BOJ

1966-프린트 큐 (python)

by bky373 2020. 10. 3.

< 핵심 로직 >
    1. 큐에서 첫 번째 원소를 뽑는다
    2. 나머지 원소들 중 우선순위가 더 큰 게 있다면 큐 목록의 뒤로 보낸다
    3. 그렇지 않으면 출력한다
        - count +1 한다
        - 현재 문서가 찾고자 하는 문서의 인덱스와 맞는지 확인한다 (맞다면 break하여 반복문을 빠져나온다)
    4. 1-3번의 과정을 반복한다

tc = int(input())
answer = []

for c in range(tc):
    count = 0
    n, m = list(map(int, (input().split())))
    priorities = list(enumerate(map(int, (input().split()))))

    while True:
        cur = priorities.pop(0)
        if any(cur[1] < p[1] for p in priorities):
            priorities.append(cur)
        else:
            count += 1
            if cur[0] == m:
                answer.append(count)
                break

for a in answer:
    print(a)


배운 점
    - fastcampus 풀이를 참고했을 때, 튜플, max함수, 람다 함수의 이용법을 잘 연습해놔야겠다는 생각이 들었다.


문제 출처 : www.acmicpc.net/problem/1966

'> 알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글

10930-SHA-256 (python)  (0) 2020.10.06
5397-키로거 (python)  (0) 2020.10.03
1874-스택 수열 (python)  (0) 2020.10.03
2780-블랙잭 (python)  (0) 2020.09.29
2920-음계 (python)  (0) 2020.09.29

댓글