반응형
코딩하기 전 생각하기
/*
문자열을 순회하면서 알파벳 개수를 벡터에 count하자.
count 벡터의 최대값을 알아내자.
최대값이 0이거나,
알파벳의 사용 수가 최대값과 같은 경우가 2번 이상이면 물음표를 출력한다.
그렇지 않으면, 가장 많이 사용된 알파벳을 대문자로 출력한다.
*/
코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
string str;
cin >> str;
vector<int> count(26, 0);
for ( char c : str ) {
int index;
if ( c >= 'a' )
index = c - 'a';
else
index = c - 'A';
count[index]++;
}
int max = *max_element(count.begin(), count.end());
if ( max == 0 ) {
cout << "?";
return 0;
}
int max_count = 0;
int max_i;
for ( int i = 0; i < 26; i++ ) {
if( count[i] == max ) {
max_count++;
max_i = i;
}
}
if ( max_count > 1 ) {
cout << "?";
}
else {
cout << (char)(max_i + 'A');
}
}
느낀점
어렵지 않게 통과할 수 있었다.
max_element를 사용할 때 유의할 점은 값 자체를 반환하지 않고 값의 주소를 반환한다는 점이다.
(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.
댓글 환영합니다!
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준/BOJ] 6321번 - IBM 빼기 1 (C++) (0) | 2021.07.07 |
---|---|
[백준/BOJ] 1316번 - 그룹 단어 체커 (파이썬) (0) | 2021.07.07 |
[백준/BOJ] 5622번 - 다이얼 (C++) (4) | 2021.07.06 |
[백준/BOJ] 8958번 - OX퀴즈 (C++) (0) | 2021.07.06 |
[백준/BOJ] 4659번 - 비밀번호 발음하기 (파이썬) (0) | 2021.07.06 |
댓글