[문제]
[코드 및 결과]
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
int main() {
int N, maxval = 0;
string title;
string bestseller;
map<string, int> m;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> title;
m[title]++;
}
for (auto i = m.begin(); i != m.end(); i++) {
maxval = max(maxval, i->second);
}
for (auto i = m.begin(); i != m.end(); i++) {
if (maxval == i->second) {
bestseller = i->first;
cout << bestseller << "\n";
return 0;
}
}
return 0;
}
[설명]
책 이름들을 입력받은 후에 제일 많이 입력받은 책 이름을 출력하면 되는 문제이다.
먼저, 필요한 변수들을 선언하고, map도 사용하기 위해 선언해준다.
map을 이용하여 책 이름과 각각의 책이 나온 빈도수를 동시에 처리하려고 한다.
N만큼 title을 입력받고 m[title]++로 해당 title의 value값을 1씩 증가시켜준다.
map을 처음부터 끝까지 돌면서 value값이 가장 큰 값을 maxval 변수에 저장한다.
다시 map을 처음부터 끝까지 돌면서 value값이 maxval값과 같은 경우를 찾는다.
찾았다면, 해당하는 key값을 bestseller 변수에 저장하고 그 값을 출력해서 마무리한다.
'C++ > Baekjoon' 카테고리의 다른 글
[BOJ] 2022 SISS 2학기 스터디 - 2주차 (0) | 2022.09.18 |
---|---|
[BOJ] 2022 SISS 2학기 스터디 - 1주차 (0) | 2022.09.11 |
[BOJ] #1065. 한수 (0) | 2022.07.31 |
[BOJ] 2022 SISS 1학기 스터디 - 8주차 (0) | 2022.06.24 |
[BOJ] 2022 SISS 1학기 스터디 - 7주차 (0) | 2022.06.19 |
댓글