문제 |
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
코드 |
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
int arr[26]{};
for (char c : s) {
if (c > 'Z') c -= 'a';
else c -= 'A';
arr[c]++;
}
int res;
int max = 0;
bool multi = false;
for (int i = 0; i < 26; i++) {
if (arr[i] > max) {
res = i;
max = arr[i];
multi = false;
} else if (arr[i] == max) {
multi = true;
}
}
if (multi) cout << '?';
else cout << (char) (res + 'A');
return 0;
}
설명 |
설명
각 알파벳이 사용된 횟수를 arr 배열에 저장한다.
이 때, 소문자와 대문자에 상관없이 저장해야하기 때문에 소문자는 'a' 만큼 빼고, 대문자는 'A' 만큼 빼주어
첫번째 인덱스부터 A의 개수, B의 개수... 이렇게 저장한다.
가장 많이 사용된 알파벳이 여러 개라면 multi 가 true가 되므로 ? 를 출력하고,
이외의 경우에는 대문자로 출력해야하므로 'A'를 더해 출력한다.
'PS > BOJ' 카테고리의 다른 글
[C++] BOJ (백준) 2439 : 별 찍기 - 2 (0) | 2022.09.06 |
---|---|
[C++] BOJ (백준) 1546 : 평균 (0) | 2022.09.06 |
[C++] BOJ (백준) 1152 : 단어의 개수 (0) | 2022.09.06 |
[C++] BOJ (백준) 2475 : 검증수 (0) | 2022.09.06 |
[C++] BOJ (백준) 15964 : 이상한 기호 (0) | 2022.09.06 |