[BOJ] 신입 사원

Minsu Han·2022년 12월 2일
0

알고리즘연습

목록 보기
57/105

코드

from sys import stdin
input = stdin.readline

t = int(input())
for _ in range(t):
    ans = 0
    winners = []
    n = int(input())
    
    scores = [list(map(int, input().split())) for _ in range(n)]
    scores.sort(key=lambda x: x[0])    # 서류순위 순서대로 정렬
    winners.append(scores[0][1])    # 서류1등을 합격자에 추가(면접순위만 추가하였음)
    ans += 1

    # 가장 최근 합격자(index: -1)보다 면접순위가 높은 사람을 합격자에 추가
    for i in range(len(scores)):
        if scores[i][1] < winners[-1]:
            ans += 1
            winners.append(scores[i][1])
            
    print(ans)    # 정답 출력

결과

image


풀이 방법

  • 우선 서류평가 순위를 기준으로 입력받은 순위를 오름차순 정렬한 다음, 1위의 면접평가 점수를 합격자 면접평가 순위 리스트에 추가한다.
  • 그다음, 2위부터 순차적으로, 가장 최근에 추가된 합격자의 면접평가 순위보다 현재 지원자의 면접평가 순위가 높은 경우 합격자 면접평가 순위 리스트에 추가한다.
  • 가장 최근에 추가된 합격자의 면접 순위와 비교하는 이유는, 해당 합격자의 면접 순위가 그 이전 합격자의 면접평가 순위보다 항상 높으므로 그 이전 합격자들의 면접평가 순위와는 비교할 필요가 없기 때문이다.

profile
기록하기

0개의 댓글