C++

[백준 알고리즘] 11098번 : 첼시를 도와줘!, C++

2022. 1. 1. 16:14

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

 

11098번: 첼시를 도와줘!

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

www.acmicpc.net

C++로 백준 11098번을 풀어보겠다.

 

 

문제

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

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

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

입력

첫 번째 줄에는 테스트 케이스의 개수 n이 주어진다 (n≤100). 

각 테스트 케이스의 첫 번째 줄 p는 고려해야될 선수의 수이다 (1≤p≤100).  

그 아래 p개의 줄에는 선수의 정보가 표시된다. 

각각의 줄은 선수의 가격 C 와 이름을 입력한다 (C<2*109).

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

출력

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

예제 입력 1 복사

2
3
10 Iversen
1000000 Nannskog
2000000 Ronaldinho
2
1000000 Maradona
999999 Batistuta

예제 출력 1 복사

Ronaldinho
Maradona

 

 

 

 

<문제풀이>

1. 입력받은 n번 만큼 반복해야 한다. n을 사용해 while문을 n번 반복하도록 한다.

2. 첫번째 while문에서 p값을 입력받는다.

3. while문 안에 또 while문을 p번 반복해 p개의 {c, name} 값을 입력받는다.

4. 여기서 max의 c값을 찾는 코드를 추가한다.

5. 큰while안의 작은 while문이 끝나면 먼저 구한 max의 name값을 출력한 후, 다시 큰 while문을 실행하도록 한다.

6. 큰 while문이 시작하기 전에, max, maxname, i2 변수를 초기화 한다.

 

이 문제에서 가장 중요한 부분은 while문이 반복될 때, 반복의 처음부분에 "max, maxname, i2변수들을 초기화"시켜줘야 한다는 것이다.

초기화를 안 하면 내가 원하는 만큼 반복문이 안 돌거나, 내가 원하는 값을 출력할 수 없는 오류가 발생한다.

 

 

코드는 다음과 같다.

#include <iostream>

#include <string>

제일 앞에 이 두 줄이 잘려 있다.