[Python/Baekjoon] 1946. 신입 사원

정나린·2022년 10월 16일

💬 문제

문제 난이도: 백준 실버 1

문제 링크: https://www.acmicpc.net/problem/1946

❗️접근 방법

  • 서류 등수와 면접 등수가 같이 주어지므로 임의로 하나 기준(ex. 서류 등수)를 기준으로
    [서류 등수, 면접 등수]가 원소로 담긴 2차원 배열을 오름차순 정렬한다.
  • 오름차순 정렬을 했기 때문에 면접 등수만 고려하면 된다.
  • 문제의 조건이 어떤 [서류 등수, 면접 등수]가 다른 임의의 [서류 등수, 면접 등수]보다 모두 낮으면 안된다고 했다.
  • 따라서 현재 오름차순으로 정렬된 배열의 0번째 원소는 [1, 면접 등수]일 것이다.
  • 이때의 면접 등수가 초기의 기준이 되는 최대 면접 등수(maxTwo)가 된다.
  • 2차원 배열을 for문으로 돌면서 maxTwo보다 작은 면접 등수가 나오면 maxTwo를 갱신해주면서 총 합격할 사원의 수를 알아내면 된다.

✅ 정답 코드

# 신입 사원
import sys 
input = sys.stdin.readline
print = sys.stdout.write
T = int(input())
for _ in range(T):
    N = int(input())
    arr = []
    for _ in range(N):
        arr.append(tuple(map(int, input().split(' '))))
    arr.sort()

    cnt = 1
    maxTwo = arr[0][1]
    for one, two in arr:
        if two < maxTwo:
            cnt += 1
            maxTwo = two
    print(f'{cnt}\n')

✍️ 새롭게 배운 부분

  • 문제에 딱 맞는 정렬은 수고로움을 엄~청 많이 줄여준다.

0개의 댓글