Yangjojang of The Year
문제
입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다.
타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다.
학교별로 한 해 동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라.
입력
- 입력의 첫 줄에는 테스트 케이스의 숫자
T
가 주어진다. - 매 입력의 첫 줄에는 학교의 숫자 정수
N
(1 ≤N
≤ 100)이 주어진다. - 이어서
N
줄에 걸쳐 학교 이름S
(1 ≤ |S
| ≤ 20,S
는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해 동안 소비한 술의 양L
(0 ≤L
≤ 10,000,000)이 공백으로 구분되어 정수로 주어진다. - 같은 테스트 케이스 안에서 소비한 술의 양이 같은 학교는 없다고 가정한다.
출력
각 테스트 케이스마다 한 줄에 걸쳐 술 소비가 가장 많은 학교의 이름을 출력한다.
예제 입력 1
2
3
Yonsei 10
Korea 10000000
Ewha 20
2
Yonsei 1
Korea 10000000
예제 출력 1
Korea
Korea
<내 코드> => O(N log N)
import sys
T = int(sys.stdin.readline())
for t in range(T):
N = int(sys.stdin.readline())
univ = []
for n in range(N):
s, a = sys.stdin.readline().split()
univ.append((s, int(a)))
univ.sort(key= lambda x : x[1], reverse=True)
sys.stdout.write(univ[0][0] + '\n')
- 문제를 풀 때 튜플과 람다를 이용해서 잘 푼점에 대해서 뿌듯하다
이번에 람다를 직접 해보면서 감이 생겼다.
<모범사례> => O(N)
import sys
T = int(sys.stdin.readline())
for _ in range(T):
N = int(sys.stdin.readline())
max_alcohol = -1
max_univ = ''
for _ in range(N):
s, a = sys.stdin.readline().split()
a = int(a)
if a > max_alcohol:
max_alcohol = a
max_univ = s
print(max_univ)
- 정렬이라는 것만 생각했다가, 단순히 최댓값을 찾을 수 있다는 것을 놓쳤음
- 전통적으로 내가 많이생각했던 방법이었음
<보충학습>
write()는 끝에 무조건 "\n" 을 넣자
'문제풀이 > 일일연습문제' 카테고리의 다른 글
[Sort]99클럽 코테 스터디 29일차 TIL + 2327-largest-number-after-digit-swaps-by-parity (0) | 2024.11.26 |
---|---|
[Sort]99클럽 코테 스터디 28일차 TIL + python_Algorithm/0506-relative-ranks (0) | 2024.11.25 |
[Sort]99클럽 코테 스터디 26일차 TIL + 백준/Silver/11004. K번째 수 (0) | 2024.11.23 |
[Priority Queue]25일차 TIL + 프로그래머스/2/42626. 더 맵게 (0) | 2024.11.22 |
[Priority Queue]99클럽 코테 스터디 24일차 TIL + 백준/Silver/1417. 국회의원 선거 (1) | 2024.11.21 |