GitHubSeob
C++ / 백준 / 1302 / 베스트셀러 본문
문제
https://www.acmicpc.net/problem/1302
1302번: 베스트셀러
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고
www.acmicpc.net
문제풀이
map<string, int>book을 선언한다.
string인 key부분에는 책의 이름을, int인 value 부분에는 책의 개수를 입력한다.
입력을 받으면 book[책 이름]++을 하여 해당 책의 개수를 1 증가시킨다.
그다음 book[책 이름]의 값과 max_count 값을 비교하면서 max_count값을 최댓값으로 유지한다.
map은 알아서 정렬되므로 iterator를 이용해 book의 처음부터 탐색하면서 책의 개수 부분인 iterator->second 값과 max_count값이 같으면 해당 책의 이름인 iterator->first를 출력한다.
코드
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N(0), idx(0);
int max_count(0);
string title("");
cin >> N;
map<string, int>book;
map<string, int>::iterator iter;
for (idx = 0; idx < N; ++idx) {
cin >> title;
book[title]++;
max_count = max(max_count, book[title]);
}
for (iter = book.begin(); iter != book.end(); ++iter) {
if (iter->second == max_count) {
cout << iter->first;
return 0;
}
}
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 14916 / 거스름돈 (0) | 2023.07.04 |
---|---|
C++ / 백준 / 2529 / 부등호 (0) | 2023.06.11 |
C++ / 백준 / 10546 / 배부른 마라토너 (0) | 2022.03.31 |
C++ / 백준 / 4358 / 생태학 (0) | 2022.03.30 |
C++ / 백준 / 11286 / 절댓값 힙 (0) | 2022.03.24 |