[Baekjoon 1946] 신입 사원

문지영·2023년 3월 2일
0

CODINGTEST

목록 보기
8/21

문제 1946

import sys
input = sys.stdin.readline

T = int(input())
for _ in range(T):
    N = int(input())

    rank = [list(map(int, input().split())) for _ in range(N)]
    rank.sort() # 서류 등수로 정렬
    
    top = 0 # 현재 최고 순위 지원자 인덱스
    answer = 1 # 첫번째 지원자 포함
    for i in range(1, N):
        if rank[i][1] < rank[top][1]: # 면접 등수가 더 높은 지원자가 나타나면
            top = i # 순위 바뀜
            answer+=1
            
    print(answer)

풀이

"선발되기 위해서는 서류와 면접 등수 중 더 낮은 등수(더 큰 수) 항목이 다른 항목의 더 높은 등수를 가진 다른 지원자보다 등수가 높아야 한다."를 기준으로 코드를 작성했지만, 첫 번 째 했던 풀이는 이중 for문으로 시간 초과가 나옴.

따라서, 서류 등수를 기준으로 정렬을 미리하여 for문 한 번으로 작성.
서류 등수로 정렬되어 있어 top 지원자보다 면접 순위가 높아야 선발.

결과

profile
BeHappy

0개의 댓글