728x90
반응형
1157번: 단어 공부
문제
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
풀이
가장 많이 사용된 알파벳을 출력하는 문제이며 여러 개일 경우 '?'를 출력한다.
- 문자열을 입력받고 출력이 대문자이기 때문에 모든 문자를 대문자로 바꿔준다.
- 미리 만들어놓은 alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 문자열에서 차례대로 각 알파벳이 몇 개 들어있는지 계산해서 배열에 추가한다.
- 가장 높은 개수를 찾고 result에 가장 많이 사용된 알파벳을 저장한다.
- 가장 높은 개수를 가진 다른 문자가 있는지 검사한다.
- 검사 결과가 여러개이면 '?'를 출력하고 아닌 경우 result를 char형으로 바꾸어 출력한다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int arr[26] = {0};
int max = 0, result, cnt = 0;
string str, alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cin >> str;
for (int i = 0; i < str.length(); i++)
if (str[i] >= 97 && str[i] <= 122)
str[i] -= 32;
for (int i = 0; i < alphabet.length(); i++)
for (int j = 0; j < str.length(); j++)
if (alphabet[i] == str[j])
arr[i] += 1;
for (int i = 0; i < 26; i++)
if (arr[i] > max) {
max = arr[i];
result = alphabet[i];
}
for (int i = 0; i < 26; i++)
if (arr[i] == max)
cnt++;
if (cnt > 1)
cout << '?' << '\n';
else
cout << (char)result << '\n';
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 1181 단어 정렬 (0) | 2023.02.11 |
---|---|
[백준 / BOJ] C++ 1158 요세푸스 문제 (0) | 2023.02.11 |
[백준 / BOJ] C++ 1153 네 개의 소수 (0) | 2023.02.11 |
[백준 / BOJ] C++ 1152 단어의 개수 (0) | 2023.02.11 |
[백준 / BOJ] C++ 1149 RGB거리 (0) | 2023.02.11 |