반응형
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
풀이 )
문자열을 입력 받을 때 소문자의 경우 아스키코드값 'a'를 빼주고 대문자의 경우 'A'를 빼주어 해당 배열의 수를 증가 시킨다.
먼저 각 배열을 순회하면서 가장 많이 쓰인 알파벳을 찾고 다음번 순회하면서 가장 많이 쓰인 알파벳이 2개 이상인지 확인했다.
#include <cstdio>
using namespace std;
int main(void)
{
int cnt[26] = {0, };
char word[1000002] = "";
scanf("%s", word);
int i = 0;
while(word[i]){
if(word[i] < 'a')
cnt[word[i]-'A']++;
else
cnt[word[i]-'a']++;
i++;
}
int max = 0, max_idx = 0, flag = 0;
for(int i = 0; i < 26; ++i){
if(cnt[i] > max){
max = cnt[i];
max_idx = i;
}
}
for(int i = 0; i < 26; ++i){
if(i == max_idx)
continue;
else
if(cnt[i] == max)
flag++;
}
if(flag)
printf("?\n");
else
printf("%c\n", 'A'+max_idx);
return 0;
}
반응형
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 - 2468 : 안전 영역 (0) | 2020.03.24 |
---|---|
[C++] 백준 - 10451 : 순열 사이클 (0) | 2020.03.22 |
[C++] 백준 - 1019 : 책 페이지 (0) | 2020.03.22 |
[C++] 백준 - 1966 : 프린터 큐 (0) | 2020.03.20 |
[C++] 백준 - 2164 : 카드2 (0) | 2020.03.20 |