백준(1946) - 신입사원 Python

최대 1 분 소요

백준(1946) - 신입사원

문제풀이 : 그리디 알고리즘, 파이썬

해결방법

지원자의 서류 성적와 면접 성적이 다른 지원자의 서류 성적과 면접 성적과 비교해서 둘다 떨어지는 경우를 count 하면 된다.

정렬하게되면 순서가 바뀌게 되므로 처음 입력받을 때 기존의 번호도 리스트에 넣었지만, 결과적으로 사용하진 않았다. -> 처음 접근 방법으로 set()에 해당하는 번호를 추가해나가는 방법을 하려고 했었다.

  1. 서류 등수기준으로 정렬한다.
  2. 면접 점수가 이전의 신입사원 등수보다 높다면 cnt를 증가시킨다.
  3. 순차적으로 제일 낮은 면접등수를 확인하면서 for문을 진행하면 된다.
import sys
input = sys.stdin.readline

m = int(input())
for _ in range(m):
    n = int(input())

    rank = []
    for i in range(n):
        surue, meet = map(int, input().split())
        rank.append((i, surue, meet))

    rank.sort(key=lambda x: x[1])
    cnt = 0
    min_meet = rank[0][2]
    for i in range(1, n):
        if rank[i][2] > min_meet:
            cnt += 1
        min_meet = min(min_meet, rank[i][2])
    print(n - cnt)

댓글남기기