hwooo
(C) 1157번: 단어 공부 본문
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net


풀이
입력된 문자가 소문자인지 대문자인지를 파악한다. 각각을 숫자로 변환하여 해당 알파벳이 쓰인 개수를 세어 저장하고, 쓰인 횟수가 같다면 '?'를 출력했다.코드
#include <stdio.h>
int main() {
int i, alphabet, loc[26] = { 0, }, max = 0, max_i = 0;
char word[1000001];
scanf("%s", &word);
i = 0;
while (word[i] != NULL) {
if (word[i] >= 'a') alphabet = word[i] - 'a';
else if (word[i] >= 'A') alphabet = word[i] - 'A';
loc[alphabet]++;
if (max < loc[alphabet]) max = loc[alphabet], max_i = alphabet;
else if (max == loc[alphabet]) max_i = '?';
i++;
}
if (max_i != '?') max_i += 'A';
printf("%c", max_i);
return 0;
}
string.h 함수를 사용해서 코드를 짰는데 visual studio에서는 잘 돌아갔지만, 백준에서는 런타임 에러가 발생했다.
#include <stdio.h>
#include <string.h>
int main() {
int i, alphabet, loc[26] = { 0, }, max = 0, max_i = 0;
char word[100001];
scanf("%s", &word);
strupr(word);
i = 0;
while (word[i] != NULL) {
alphabet = word[i] - 'A';
loc[alphabet]++;
if (max < loc[alphabet]) max = loc[alphabet], max_i = alphabet;
else if (max == loc[alphabet]) max_i = '?';
i++;
}
if (max_i != '?') max_i += 'A';
printf("%c", max_i);
}
'Study > Algorithm' 카테고리의 다른 글
(C) 2908번: 상수 (0) | 2022.06.13 |
---|---|
(C) 1152번: 단어의 개수 (0) | 2022.06.08 |
(C) 2675번: 문자열 반복 (0) | 2022.06.07 |
(C) 10809번: 알파벳 찾기 (0) | 2022.06.07 |
(C) 11720번: 숫자의 합 (0) | 2022.06.07 |