Algorithm/Problem Solve

[백준 1157번] 단어 공부

아네스 2020. 12. 11. 15:20
반응형

배열로 푸는사람들이 많아보이던데.. 여러번 탐색하기 싫어서 map으로 풀었다.

map의 iteration 쓰는게 익숙치 않아서 여러번 해보면 좋을듯하다.

 

#include <bits/stdc++.h>

using namespace std;

string input;
map<char,int> m;
int main(void)
{
    char max_char;
    int max_value= 0;
    cin >> input; 	//input을 string으로 받고
    for(int i = 0; i<input.length(); i++)		
    {
        input[i] = toupper(input[i]); // 대소문자 구분없으니 대문자로 모두 만들어서
        m[input[i]]++;		// 같은 key값이 들어오면 value로 카운팅.
    }
    
    for(auto it = m.begin(); it != m.end(); it++)	
    {
        if( it->second > max_value)  //가장 큰 value값과 그에 해당하는 char값 찾음.
        {
            max_char = it->first;
            max_value = it->second;
        }
    }
    int cnt =0;			// max값의 중복을 찾기위함.
    for(auto it =m.begin(); it != m.end(); it++)	// 다시한번 도는데
    {
        if(it->second == max_value)	 // 위 for문에서 찾은 max_value가 몇번나오는지.
        {
            cnt ++;
        }
        if(cnt >=2){	// 두번이상이라면 ? 출력
            cout << '?';
            return 0;
        }
    }
    cout << max_char;

}

 

 

반응형

'Algorithm > Problem Solve' 카테고리의 다른 글

[백준 2164번] 카드2  (0) 2020.12.13
[백준 1978번] 소수 찾기  (0) 2020.12.11
[백준 1920번] 수 찾기  (0) 2020.12.11
[백준1874번] 스택 수열  (0) 2020.12.11
[백준1260번] BFS와 DFS  (0) 2020.12.09