업데이트:

❓ 문제


구단이 성적을 내지 못한다면 답은 새 선수 영입뿐이다.
이것은 오늘날 유럽 리그에서 가장 흔한 전략이고, 노르웨이의 로젠버그 팀은 이러한 전략이 성공한 대표적 예시다.
그들은 많은 스카우터들을 지구 곳곳에 파견해 가능성 있는 루키를 찾는다.

현재 첼시는 프리미어 리그에서 헤매고 있고, 결국 새로운 선수를 사기로 결정했다.
하지만 그들은 스카우터를 기다리기 지쳤고, 훨씬 더 효율적인 전략을 개발해냈다.
“만약 무언가 팔리고 있다면, 그것에는 합당한 이유가 있다”는 배룸의 명언이 바로 그것이다.
축구에서 이 말은 곧 가장 비싼 선수가 가장 좋은 선수라는 이야기가 된다.

이에 따라 새로운 선수를 찾는 방법은 단순히 구단들에게 전화를 걸어 그들의 가장 비싼 선수를 사는게 되었다.
당신의 임무는 첼시가 리스트에서 가장 비싼 선수를 찾아낼 수 있도록 돕는 것이다.

>  입력


첫 번째 줄에는 테스트 케이스의 개수 n이 주어진다 (n≤100).
각 테스트 케이스의 첫 번째 줄 p는 고려해야될 선수의 수이다 (1≤p≤100).
그 아래 p개의 줄에는 선수의 정보가 표시된다.
각각의 줄은 선수의 가격 C 와 이름을 입력한다 (C<2*109).

  • 모든 선수의 가격은 서로 다르다.
  • 선수의 이름은 20자 이하여야 하며, 사이에 공백이 있어서는 안 된다.

>  출력


각각의 테스트 케이스에서 가장 비싼 선수의 이름을 출력해야한다.

✔️ 풀이


1
2
3
4
5
6
7
8
9
10
11
n = int(input())

for i in range(n):
    p = int(input())
    for j in range(p):
        value, name = input().split()
        value = int(value)
        if j == 0 or maxValue < value:
            maxValue = value
            maxName = name
    print(maxName)

테스트 케이스 개수 n을 입력받고, n번 만큼 고려할 선수의 수 p를 입력 받는다.

이는 n번 반복하는 for 문 안에 p를 입력 받은 후 for 문을 p번 돌리면 된다.

처음으로 받은 값은 일단 저장해두고 이후에 받은 값과 비교하여 큰 값만 다시 maxValue와 maxName에 저장하면 된다.

처음에 maxValue = 0으로 초기화를 시켜서 ij_로 생략할 수 있을 것 같다.

p번 반복하는 for 문 종료 후 최종 선수 이름을 출력하면 된다.

💬 평가


1
2
3
4
5
6
7
8
9
10
n = int(input())

for i in range(n):
    p = int(input())
    dic = {}
    for j in range(p):
        value, name = input().split()
        value = int(value)
        dic[value] = name
    print(dic.get(max(dic.keys())))

위와 같이 딕셔너리를 이용한 방법도 있다고 한다.

처음에 리스트로 값을 저장해 비교하려 했었는데, 리스트를 잘 알지 못해서.. 그만뒀다.

풀고 나서 보니까 리스트를 쓸 필요가 전혀 없던 문제여서 안심이 됐다.

아직 파이썬의 for문이 익숙하지 않아 매번 for (i=0;i<n;i++) 이런식으로 썼다 지우는데 조심해야겠다.

Notice: 이 게시물은 백준 사이트를 참고하였습니다.

댓글남기기