Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오버라이딩
- Merge sort
- 백준
- 알고리즘
- 파이썬 알고리즘
- 이진탐색
- 스택과 힙
- 딕셔너리
- 코테
- 캐싱
- 비지도학습
- HTTP
- post
- 파이썬
- 코딩
- 파이썬 오류
- 멱등
- BOJ
- 해시
- 딥러닝
- 너비우선탐색
- 지도학습
- bineary search
- rest api
- 프로그래머스
- 깊이우선탐색
- 머신러닝
- 강화학습
- 코딩테스트
- 자바
Archives
- Today
- Total
chae._.chae
[Algorithm] 백준 #1946 - 신입사원 본문
728x90
반응형
맨 처음에 문제 이해가 안됐음...
입력하는 숫자들이 점수 라고 착각해서 잘못 풀고 있었다.. ㅂㅏ보...
점수가 아니라 순위를 입력한다!!
아래 그림처럼 순위를 적어주고, 합격자가 누구인지 옆에 표시하며 분류해줬다.
- 순위를 서류를 기준으로 먼저 오름차순 정렬을 해준다.
- 서류 1등은 무조건 합격이므로, 서류 1등의 면접 순위를 rank변수에 저장해준다.
- 아래로 내려가며 면접 순위를 비교해준다. (서류를 기준으로 오름차순 정렬을 했기에 서류 순위는 비교대상보다 무조건 낮기에 면접 순위만 비교해주면 된다.)
- (1 4) (2 3) 을 비교하면, 면접 순위가 뒷사람이 더 높으므로 합격이다.
- 밑에 사람과 순차적으로 비교하며, 면접 순위가 더 높다면, 그 사람은 합격이므로 rank를 그사람의 순위로 업데이트 시켜준다.
rank순위를 업데이트 시켜줘야 그 다음 사람과 비교할 때 다시 rank를 사용할 수 있다.
- 여기서도 동일하게, 일단 서류기준 오름차순 정렬을 해주고, rank변수에 4를 저장해준다.
- 아래사람과 면접 순위를 비교해준다. (1 4), (2 5) 를 비교해주면, 아래사람의 면접순위가 더 낮으므로, 이 사람은 탈락이다. (=> rank는 그대로 둔다)
- 다시 (1 4), (3, 6) 을 비교해준다. (=> 탈락이다. rank=4 로 그대로 있음)
- (1 4), (4, 2) 비교 => 아래사람의 면접순위가 더 높으므로, 합격! rank = 2로 업데이트
- 마지막 사람까지 비교해준다.
<Solution>
import sys
T = int(sys.stdin.readline())
while T != 0: # 0이되면 테스트 종료
N = int(sys.stdin.readline())
people = []
cnt = 1 # 합격자 카운트! 서류 1위는 무조건 붙음
for _ in range(N):
num1, num2 = map(int, sys.stdin.readline().split())
people.append([num1, num2])
people.sort(key=lambda x: x[0]) #일단 서류 순위로 정렬
rank = people[0][1] # 서류 1위인 사람의 면접 순위를 넣어준다
for i in range(1, N):
if rank > people[i][1]:
cnt += 1
rank = people[i][1]
print(cnt)
T -= 1
728x90
'파이썬 알고리즘 > BOJ' 카테고리의 다른 글
[Algorithm] 백준 #2667 - 단지번호붙이기 (0) | 2022.05.27 |
---|---|
[Algorithm] 백준 #4963 - 섬의 개수 (0) | 2022.05.20 |
[Algorithm] 백준 #2108 - 통계학 (0) | 2022.03.29 |
# 3048 - 개미 (0) | 2022.01.15 |
#18238 - ZOAC 2 (0) | 2022.01.09 |