-
11557 Yangjojang of The YearComputerScience/코딩테스트 2019. 11. 27. 23:20
문제
입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다.
타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다.
학교별로 한 해동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라.
입력
입력의 첫 줄에는 테스트 케이스의 숫자 T가 주어진다.
매 입력의 첫 줄에는 학교의 숫자 정수 N(1 ≤ N ≤ 100)이 주어진다.
이어서 N줄에 걸쳐 학교 이름 S(1 ≤ |S| ≤ 20, S는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해동안 소비한 술의 양 L(0 <= L <= 10,000,000)이 공백으로 구분되어 정수로 주어진다.
같은 테스트 케이스 안에서 소비한 술의 양이 같은 학교는 없다고 가정한다.
출력
각 테스트 케이스마다 한 줄에 걸쳐 술 소비가 가장 많은 학교의 이름을 출력한다.
예제 입력 1 복사
2
3
Yonsei 10
Korea 10000000
Ewha 20
2
Yonsei 1
Korea 10000000
예제 출력 1 복사
Korea
Korea
처음엔 vector로 접근하려 했는데 첫번째 col에는 string, 두번째에는 int를 구분하기가 쉽지 않았고
이중배열로 만드는것도 쉽지 않았다.
YJJ라는 class 를 만들어주고
그안에 string 과 int 변수를 설정해둔 뒤,
new를 이용하여 동적으로 할당해줬다.
new를 이용할때
클래스이름 *포인터변수 = new 클래스이름;
혹은 배열을 할당할 때,
클래스이름 *포인터변수 = new 클래스이름[n];
임을 기억하자.
big= 0;으로 처음에 선언해둔 뒤
모든 배열을 조사한 뒤 최대 값을 가진 배열의 인덱스를 기록한다.
그리고 기록된 인덱스에 해당하는 학교이름을 출력한다.
#include <iostream> #include <string> using namespace std; int N ,ib; int big=0; class YJJ{ public: string school; int c; }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); //cin 속도 향상 위해 cin >> N; while (N--) { int M; cin >> M; YJJ *y = new YJJ[M]; for(int i =0 ;i<M; i++){ cin >> y[i].school >> y[i].c; if(big<y[i].c) { big = y[i].c; ib = i; } } cout << y[ib].school << "\n"; } }
'ComputerScience > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 베스트앨범 (0) 2020.07.04 [프로그래머스] 여행경로 (0) 2020.07.03 [hash/map]Programmers 완주하지 못한 선수 (0) 2020.06.04 9012번 괄호 (0) 2020.01.06 1920번 숫자 찾기 (0) 2019.11.23