백준 1966 (프린터 큐) - Python

김종언·2024년 6월 27일
0

백준

목록 보기
18/18

문제

꽤나 고민했다. 어떻게 하면 더 간단하게 풀 수 있을지.

T = int(input())

for _ in range(T):
    N, M = map(int, input().split())
    numbers = list(map(int, input().split()))
    count = 0
    while True:
        for index in range(len(numbers)):
            if any(element > numbers[index] for element in numbers):
                continue
            else:
                numbers[index] = 0
                count += 1
            if index == M:
                print(count)
            if sum(numbers) == 0:
                break
        if sum(numbers) == 0:
            break

중요도를 비교할 때 뒤로 넘기는 것이 아니라 순서를 뒤로 넘어가도 똑같다는 것을 알아차렸다. 순서 상관없이 비교하는 수 보다 큰 수가 하나라도 있는지 확인했다. 큰 수가 없어서 뽑아줄 때는 그자리를 0으로 만들어줬다. index에 변화를 주지 않기 위해 + 0이면 어차피 비교할때 영향을 주지 않으니까. 뽑힐 때 마다 뽑히는 수만큼 count를 늘려준다.

그 다음 내가 원하던 M이 뽑히는 순간 count를 print한다.

다른 풀이들을 찾아봤다. 다들 복잡하게 풀었더라. 내가 가장 직관적이고 간단하게 풀은 것 같다. 기분이 꽤나 좋다. 열심히 조금씩 차곡차곡 해보자.

profile
나는 김종언이다.

0개의 댓글