728x90
코드
#include <stdio.h>
#include <string.h>
main() {
char s[5001]; //입력받은 문자열을 저장하는 배열
int count[26] = { 0 }; //알파벳 개수를 세는 배열
int max = 0; //가장 많이 나온 알파벳 개수
while (gets(s)) {
for (int i = 0; i < strlen(s); i++)
if (s[i] >= 'a' && s[i] <= 'z') //s[i]가 알파벳 소문자인지 확인
count[s[i] - 'a']++; //해당 알파벳 개수 1증가
}
for (int i = 0; i < 26; i++) //최다 알파벳 체크
if (count[i] > max)
max = count[i];
for (int i = 0; i < 26; i++) //알파벳 순서대로 최다 알파벳 출력
if (count[i] == max)
printf("%c", i + 'a');
return 0;
}
설명
(알파벳을 세는 과정은 배열과 아스키값을 이용했다.)
우선 문자열을 gets 함수로 입력 받아 s배열에 저장한다.
첫번째 for문으로 문자열을 문자 하나하나 확인하면서 해당 문자가 알파벳 소문자이면 해당 알파벳의 개수를 1 증가시킨다.
두번째 for문으로는 가장 많이 나온 알파벳이 얼마나 나왔는지(개수) 값을 max에 저장한다.
세번째 for문으로 가장 많이 나온 알파벳을 출력한다. 여러 개일 경우 알파벳순으로 출력된다.
728x90
'C & C++ > BOJ' 카테고리의 다른 글
[백준] 13235번: 팰린드롬 (0) | 2021.02.25 |
---|---|
[백준] 1568번: 새 (0) | 2021.02.25 |
[백준] 16503번: 괄호 없는 사칙연산 (0) | 2021.02.19 |
[백준] 4673번: 셀프 넘버 (0) | 2021.02.19 |
[백준] 1264번: 모음의 개수 (1) | 2021.02.19 |