View
문제 링크: https://www.acmicpc.net/problem/1157
【 문제 】
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
【 입력 】
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
【 출력 】
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 '?'를 출력한다.
【 풀이 】
ASCII 코드와 문자열에 관한 이해도를 묻는 문제이다.
- 문자열 입력
- 입력 문자열을 모두 대/소문자로 전환
- 모든 알파벳을 저장한 배열을 만들어 입력 문자열과 비교
- 각 알파벳이 나온 횟수를 차례대로 배열에 저장
- 가장 많이 사용된 알파벳이 여러 개인지 확인. 여러 개라면 '?'를 출력.
- 가장 많이 사용된 알파벳을 대문자로 출력.
【 C 소스 코드 】
#include <stdio.h>
char str[1000010];
int main(void)
{
int a[30];
int i,j,k;
int cnt1 = 0,cnt2=0;
int max,mx;
scanf("%s", str);
for (i = 65; i < 91; i++)
{
k = 0;
for (j = 0; str[j] != '\0'; j++)
{
if (str[j] >= 97)
str[j] = str[j] - 32;
if (str[j] == i)
k++;
}
a[cnt1] = k;
cnt1++;
}
max = a[0];
mx = 65;
for (i = 65; i < 91; i++)
{
if (max < a[i - 65])
{
max = a[i - 65];
mx = i;
}
}
for (i = 65; i < 91; i++)
if (max == a[i - 65])
cnt2++;
if (cnt2 >= 2)
printf("?");
else
printf("%c", mx);
return 0;
}
728x90
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 7568번: 덩치 [C/C++] (1) | 2023.04.04 |
---|---|
[백준] 11866번: 요세푸스 문제 0 [C/C++] (0) | 2023.04.03 |
[백준] 2581번: 소수 [C/C++] (0) | 2023.04.02 |
[백준] 1009번: 분산처리 [C/C++] (0) | 2023.04.01 |
[백준] 1000번: A+B [C/C++] (0) | 2023.03.31 |
reply