BEAKJOON
백준(1157번 단어 공부)풀이 C++
Shin_jisoo
2021. 1. 9. 18:00
728x90
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
1) 주석 없는 VERSION
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int array[26] = { 0, };
for (int i = 0;i < s.length();i++) {
if (s[i] < 97)
array[s[i] - 65]++;
else
array[s[i] - 97]++;
}
int max = 0;
int index = 0;
for (int i = 0;i < 26;i++) {
if (max < array[i]) {
max = array[i];
index = i;
}
}
int count = 0;
for (int i = 0;i < 26;i++) {
if (array[i] == max) {
count++;
if (count >= 2) {
cout << "?" << endl;
return 0;
}
}
}
cout << (char)(index + 65) << endl;
return 0;
}
2) 주석 있는 VERSION
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int array[26] = { 0, };
for (int i = 0;i < s.length();i++) {
if (s[i] < 97) // 대문자인 경우
array[s[i] - 65]++;
else // 소문자인 경우
array[s[i] - 97]++;
}
int max = 0;
int index = 0;
for (int i = 0;i < 26;i++) {
if (max < array[i]) {
max = array[i]; // 최댓값 찾기
index = i; // 최댓값 인덱스 번호 저장
}
}
int count = 0;
for (int i = 0;i < 26;i++) {
if (array[i] == max) {
count++; // 최댓값 개수 저장
if (count >= 2) { // 최댓값이 두 개 이상인 경우
cout << "?" << endl; // ? 출력
return 0;
}
}
}
cout << (char)(index + 65) << endl; // 아닌 경우 대문자로 최댓값의 알파벳 출력
return 0;
}