- 문제
입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다.
타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다.
학교별로 한 해동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라.
조건
1. 입력의 첫 줄에는 테스트 케이스의 숫자 T가 주어진다.
2. 매 입력의 첫 줄에는 학교의 숫자 정수 N(1 ≤ N ≤ 100)이 주어진다.
3. 이어서 N줄에 걸쳐 학교 이름 S(1 ≤ |S| ≤ 20, S는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해동안 소비한 술의 양 L(0 ≤ L ≤ 10,000,000)이 공백으로 구분되어 정수로 주어진다.
4. 같은 테스트 케이스 안에서 소비한 술의 양이 같은 학교는 없다고 가정한다.
5. 각 테스트 케이스마다 한 줄에 걸쳐 술 소비가 가장 많은 학교의 이름을 출력한다.
- 코드
# 입력부
T=int(input());
# 처리부
tmp=[]; result=[];
for i in range(T):
N=int(input());
for j in range(N):
tmp.append(list(input().split()));
for k in range(N):
tmp[k][1]=int(tmp[k][1]);
tmp.sort(key=lambda x: -x[1]);
result.append(tmp[0][0]);
tmp=[];
# 출력부
for l in range(len(result)):
print(result[l]);
- 풀이 과정
테스트할 횟수를 입력받는다.
그 후 테스트 횟수만큼 루프를 돌리고, 학교와 술 소비량을 입력받을 횟수를 입력 받는다.
학교와 술 소비량을 입력받을 횟수만큼 루프를 돌린다.
처음엔 str(문자)로 값을 받고, 술 소비량은 int형으로 형 변환을 해 준다.
lambda함수를 써서 1번째 리스트에 있는 값을 기준으로 내림차순 정렬한다.
이후 정렬된 리스트에서 0번째 값(가장 소비를 많이 한 학교의 이름을 결과 리스트에 삽입한다.
계산이 끝났으면 임시 리스트는 초기화한다. (다른 경우 테스트를 해야 하므로..)
모든 연산이 끝났으면, 결과를 출력한다.
- 여담
오늘 lambda 함수를 처음 써 봤다.
파이썬을 공부하다보면 리스트로 데이터를 처리할 때가 많았는데, 그럴 때마다 n첩 for문으로 처리했던 지난 나날들이 떠오른다...
이제 lambda 함수를 알게 되었으니, 코딩할 때 조금은 편해질 것 같다.
파이썬이 왜 신의 언어라고 하는지 알겠다.
'이런 기능이 있을까?' 싶은건 어지간하면 내장 모듈로 다 구현이 되어있다....;;;
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 언제든 댓글 남겨주세요! :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 2822번 : 점수 계산 (Python / 파이썬) (0) | 2023.01.04 |
|---|---|
| [백준] 8979번 : 올림픽 (Python / 파이썬) (0) | 2023.01.04 |
| [백준] 1237번 : 정ㅋ벅ㅋ (Python / 파이썬) (1) | 2023.01.03 |
| [백준] 2501번 : 약수 구하기 (Python / 파이썬) (2) | 2023.01.03 |
| [백준] 1550번 : 16진수 (Python / 파이썬) (0) | 2023.01.02 |