C로 구현한 1157번 단어 공부 문제 풀이입니다.
#include <stdio.h>
int main() {
char input[1000001];
int spell[26] = {0,};
int count=0;
char num = '?';
scanf("%s", input);
for(int i=0; input[i]!='\0'; i++) {
if(input[i] >= 'a')
input[i] = input[i] - 32;
spell[input[i]-65]++;
}
for(int j=0; j<26; j++){
if(spell[j] > count) {
count = spell[j];
num = j;
} else if(spell[j] == count)
num = '?';
}
if(num != '?')
printf("%c", num+65);
else
printf("?");
}
문자열을 입력받고 입력받은 값만큼 첫번째 반복문을 수행해줍니다. 입력 받은 각 문자가 'a'보다 크거나 같을 경우
10진수 32를 빼서 대문자로 저장해주고 정수형으로 이루어진 spell 배열의 각 자리의 값을 1씩 증가시켜줍니다.
여기까지 각 알파벳의 등장 횟수가 저장되었고 두번째 반복문에서 각 횟수를 비교하여 가장 큰 값의 자리를 뽑아내는
작업을 합니다. 문제에서 '가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.' 와 같은 조건이
있기 때문에 조건문에서 비교할 알파벳 등장횟수(spell[j])와 저장된 알파벳 등장횟수(count)가 같을 경우 문자형 변수
num에 '?' 를 저장합니다.
최종적으로 num값이 '?'가 아닐 경우 가장 많이 사용된 대문자 알파벳을 출력할 수 있도록 하고 그렇지 않을 경우에는
물음표가 출력될 수 있도록 합니다.
https://www.acmicpc.net/problem/1157
'백준(C언어) 풀이 > 문자열' 카테고리의 다른 글
백준(C) 2908번 상수 풀이 (0) | 2021.07.14 |
---|---|
백준(C) 1152번 단어의 개수 풀이 (0) | 2021.07.14 |
백준(C) 2675번 문자열 반복 풀이 (0) | 2021.07.14 |
백준(C) 10809번 알파벳 찾기 풀이 (0) | 2021.07.14 |
백준(C) 11720번 숫자의 합 풀이 (0) | 2021.07.13 |