본문 바로가기
C++/Baekjoon

[BOJ] #1302. 베스트셀러

by 단월໒꒱ 2022. 8. 7.

[문제]

 

 

 

[코드 및 결과]

 

#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 변수에 저장하고 그 값을 출력해서 마무리한다.

 

 

 

댓글