반응형
배열로 푸는사람들이 많아보이던데.. 여러번 탐색하기 싫어서 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 |