티스토리 뷰

개발 블로그/알고리즘

[Swift] 백준 - 신입 사원

개발자 아라찌 2020. 11. 4. 04:31
728x90

문제

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

시험: 1차 서류심사와 2차 면접시험

근데 최고 인재만을 뽑고싶어서 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다.(너무해...)

합격자 최대 인원수 출력하는 문제.

입력

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다.

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

출력

각 테스트 케이스에 대해서 진영 주식회사가 선발할 수 있는 신입사원의 최대 인원수를 한 줄에 하나씩 출력한다.

예제 입력1

2
5
3 2
1 4
4 1
2 3
5 5
7
3 6
7 3
4 2
1 4
5 7
2 5
6 1

예제 출력 1 복사

4
3

접근방법

조건: 서류 면접 두 점수가 어떤 사람보다 모두 큰게(낮은게) 하나라도 있으면 떨어짐 -> 서류점수로 sort(오름차순)하면, 면점점수만 보면 됨.

그리고 면접점수는 정렬된 array 보다 큰 값이 있으면 결과적으로 조건에 만족하는 값이 되기 때문에 합격수 += 1를 해주면 된다.

나름대로 서치하는 횟수를 줄일려고 이렇게 짯는데, 시간초과가 났다 ㅠ _ㅜ..

그래서 입력을 파일 입력되는 코드를 사용해서 해결했다.

코드

일반 입력(시간초과)

파일입력(성공)

728x90
댓글