[백준] 1946번: 신입 사원

박정훈·2022년 4월 6일
0

코테 문제 모음

목록 보기
19/34

신입 사원

1. 문제

최고를 지향하는 굴지의 대기업 진영 주식회사가 신규 채용을 실시한다.

선발 시험은 1차 서류시험2차 면접시험으로 이루어진다.

최고만을 지향하는 회사의 이념답게 최고의 지원자만 뽑으려고 한다. 따라서

다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다.

즉, 어떤 지원 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다.

진영 주식회사는 최대 몇 명이나 선발할 수 있을까?

2. 어떻게 풀면 좋을까?

  1. 음..! 잘 모르겠다. 일단 정렬 시키고 보자. 서류심사로 정렬했다면, 면접시험 성적을 하나씩 다 비교해야 하지 않을까 싶다.

3. 풀이

  1. 정렬 + 기타

💡 정렬 활용

먼저 서류심사 기준으로 오름차순을 행한다. 서류심사로 먼저 정렬을 행함으로써 서류심사를 조건에서 배제 한 것이다. 서류 성적으로는 줄을 세웠으니까 이제 면접시험 성적만 확인하면 된다.

한줄씩 풀이! 풀이는 예제 입력을 토대로 작성되었습니다.

import sys

T = int(input())

for _ in range(T):
    # N명 중에서 비교 시작
    N = int(input())
    # 서류 심사 1등은 무조건 뽑힌다.
    count = 1
    # 지원자들의 점수가 저장된다. [[서류, 면접], [서류, 면접]...]
    applicants = []
    for i in range(N):
        p, i = map(int, sys.stdin.readline().split())
        applicants.append([p, i])
    # 서류 점수를 기준으로 정렬한다.
    applicants.sort()
    cmp_interview = applicants[0][1]
    for j in range(1, N):
        # 서류 1등의 면접 순위와 비교를 시작한다. 얘보다 높은 인터뷰 성적이라면 뽑힐 것이다.
        if cmp_interview > applicants[j][1]:
            cmp_interview = applicants[j][1]
            count += 1
    print(count)
profile
그냥 개인적으로 공부한 글들에 불과

0개의 댓글