[백준] 1946 - 신입 사원

2024. 5. 22. 16:31PS/백준

728x90

문제 링크

https://www.acmicpc.net/problem/1946

느낀 점

문제 이해를 잘하는 것이 문제 풀이의 첫 단계라는 것을 느꼈고, 먼저 코드를 작성하기 전에 로직을 이해해야한다고 생각이 들었다. 처음에는 문제 조건이 점수라고 생각해서 조금 헤맸는데, 등수라는 것을 깨달았고, 그 후에 기준이 되는 사원을 기준으로 한 명씩 뽑으면 된다는 것을 깨달았다. 재밌는 문제!

import sys
T = int(sys.stdin.readline())
answer = [] 
for _ in range(T):
    N = int(sys.stdin.readline())
    people_list = []
    for _ in range(N):
        people_list.append(list(map(int, sys.stdin.readline().split())))
    people_list = sorted(people_list, key=lambda x: (x[0], x[1]))
    defacto = None
    cnt = 0
    for idx in range(len(people_list)):
        if defacto is None:
            defacto = people_list[idx]
            cnt += 1
        else:
            if defacto[0] < people_list[idx][0] and defacto[1] < people_list[idx][1]:
                continue
            defacto = people_list[idx]
            cnt += 1
    answer.append(cnt)
for a in answer:
    print(a)