티스토리 뷰

알고리즘/BOJ

[BOJ-1946] 신입사원

개발하는 후딘 2020. 3. 25. 21:15
728x90
반응형

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

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성적, 면접 성적의 순위가 공백을 사이에 두고 한 줄에 주어진다. 두 성적 순위는 모두 1위부터 N위까지 동석차 없이 결정된다고 가정한다.

www.acmicpc.net


[풀이]

두 성적 순위(서류점수 순위, 면접점수 순위)는 모두 1위부터 N위까지 동석차 없이 결정된다.

(1) i번째 지원자의 서류점수 순위(score[i][0])를 기준으로 정렬

(2) i번째 지원자의 면접점수 순위(score[i][1])보다 작은 순위라면 합격시킨다.

(3) 맨첫번째 지원자도 포함한다.


[코드]

import sys
input=sys.stdin.readline

T=int(input())
for _ in range(T):
    N=int(input()) #지원자 수
    score=[]
    
    #각지원자의 서류성적/ 면접 성적 순위
    for i in range(N):
        score.append([*map(int, input().split())])
    
    #x[0]을 기준으로 오름차순정렬
    score=sorted(score, key=lambda x: x[0])
    min_speech=score[0][1]
    result=1
    
    for i in range(1,N):
        flag=True
        #면접
        if min_speech>score[i][1]:
            min_speech=score[i][1]
        else:
            flag=False
            
        #flag가 True이면 채용이됨.
        if flag:
            result+=1
    print(result)     
728x90
반응형

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ-1261] 알고스팟  (0) 2020.03.27
[BOJ-16936] 나3곱2  (0) 2020.03.26
[BOJ-14891] 톱니바퀴  (0) 2020.03.24
[BOJ-14500] 테트로미노  (0) 2020.03.21
[BOJ-14499] 주사위 굴리기  (0) 2020.03.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함