https://www.acmicpc.net/problem/1946
탈락 기준: 비교 대상자(B)의 서류 s, 면접 m이 둘 다 A보다 등수가 낮다면, A는 탈락
나머지는 선발 ---> 최대 인원수 구하기
- (wrong)
대체 왜 틀린건데...?my idea -> 출력 잘 나오는데 백준에서는 오답
- 서류순위 기준으로 sort
- 다음 사람(서류 1등, 2등, 3등...)의 면접 순위와 비교 (ex. 서류 1등과 2등의 면접 순위 비교)
- 2등의 면접 순위가 1등보다 낮으면? - 탈락
- 탈락이면, N - 1 (통과인원을 전체로 초기 설정해두어서 탈락인원 빼주기)
- (success)
- 서류순위 기준으로 sort
- 서류 1등은 이미 채용(pass=1)이므로 면접 순위만 비교!
- 서류 1등의 면접 순위를 초기값으로 설정 (m)
- 서류 2등의 면접 순위와 m를 비교, 2등의 면접 순위가 더 높다면 m 재설정 + 선발 인원 (pass) +1
- for문을 통해 반복
# success
import sys
T = int(sys.stdin.readline()) # 테스트 케이스 = 출력 갯수
for i in range(T):
TL = []
N = int(sys.stdin.readline())
for _ in range(N):
TL.append(list(map(int, sys.stdin.readline().split()))) # 3 2 삽입
TL.sort()
passed = 1 # 서류심사 1등은 이미 채용, 면접 순위만 비교하면 됨
m = TL[0][1]
for j in range(1, N):
if TL[j][1] < m: # 서류 1등보다 면접 순위가 높다면
m = TL[j][1]
passed += 1
print(passed)
# wrong
import sys
T = int(sys.stdin.readline()) # 테스트 케이스 = 출력 갯수
for i in range(T):
TL = []
N = int(sys.stdin.readline())
for _ in range(N):
TL.append(list(map(int, sys.stdin.readline().split()))) # 3 2 삽입
TL.sort()
passed = N
for j in range(1, N):
if TL[j][1] > TL[j-1][1]: # 서류 1등보다 면접 순위가 낮다면 (서류순위도 낮고 면접도 낮고)
passed -= 1 # 탈락인 사람 제외
print(passed)