• 문제
입학 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 함수를 알게 되었으니, 코딩할 때 조금은 편해질 것 같다.

 

파이썬이 왜 신의 언어라고 하는지 알겠다.

'이런 기능이 있을까?' 싶은건 어지간하면 내장 모듈로 다 구현이 되어있다....;;;

 

코드가 이상하거나, 이해되지 않는 부분이 있다면 언제든 댓글 남겨주세요! :)

+ Recent posts