반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 20124번 모르고리즘 회장님 추천 받습니다 파이썬(Python)

1) 문제번호 : 20124번

 

2) 문제 출처

https://www.acmicpc.net/problem/20124

 

20124번: 모르고리즘 회장님 추천 받습니다

국렬이는 모르고리즘 차기 회장을 빠르게 구해야 한다. 안 그러면 대학원 가서도 회장을 해야 하기 때문이다. 그래서 국렬이는 어떻게든 2020년 연세대학교 프로그래밍 경진대회를 열어서 차기

www.acmicpc.net

 

2. 문제

국렬이는 모르고리즘 차기 회장을 빠르게 구해야 한다. 안 그러면 대학원 가서도 회장을 해야 하기 때문이다.

그래서 국렬이는 어떻게든 2020년 연세대학교 프로그래밍 경진대회를 열어서 차기 회장을 선택하려고 했으나, 코로나19 때문에 미루고 결국 11월에 개최하게 되었다.

국렬이는 대회를 치른 사람 중에서 점수가 가장 높은 사람을 억지로 차기 회장으로 지목하려고 한다. 만약에 가장 높은 사람이 2명 이상 있는 경우, 이름이 사전 순으로 가장 앞선 사람을 차기 회장으로 뽑을 것이다.

차기 회장으로 누가 지목될지 알아내라.

 

3. 제약사항

  • 1 ≤ N ≤ 100,000. N은 사람의 수를 나타내는 양의 정수다.
  • Ai는 길이가 1 이상 10 이하의 알파벳 소문자로 구성된 문자열로 참여자의 이름이다. (1 ≤ i ≤ N)
  • Ai ≠ Aj (1 ≤ i < j ≤ N)
  • 1 ≤ Bi ≤ 1,000,000,000 (1 ≤ i ≤ N). Bi는 점수를 의미하는 양의 정수다.

 

4. 입력

다음과 같이 입력이 주어진다.

N
A1 B1
. . . . . .
AN BN

 

5. 출력

첫째 줄에 차기 회장으로 뽑힐 사람의 이름을 출력하여라.

 

6. 풀이

- sort의 람다를 설정해서 2중 조건 정렬하면 되는데, 자꾸 에러가 떠서 점수로 내림차순 하고, 다시 그 이름을 리스트로 받아와서 오름차순으로 정렬해서 출력했다.

 

7. 소스 코드

import sys
input=sys.stdin.readline

N = int(input()) # 사람의 수

result = []
MAX = 0
for _ in range(N) :
    A, B = map(str, input().split())
    result.append([A,int(B)])
    if int(B) > MAX :
        MAX = int(B)

# 점수로 내림차순
result.sort(key = lambda x : x[1], reverse=True)

name = []
for i,j in result :
    if j == MAX :
        name.append(i)

name.sort()

print(name[0])

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기