사자자리

[C언어] 백준 1371번: 가장 많은 글자 본문

C언어/C언어 문제

[C언어] 백준 1371번: 가장 많은 글자

renne 2022. 7. 31. 03:35

https://www.acmicpc.net/problem/1371

 

1371번: 가장 많은 글자

첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이

www.acmicpc.net

#include <stdio.h>
int main(){
	char text;
	int alpha[26] = {0}, max = -1;
	
	while ((text = getchar()) != EOF){
		alpha[text - 97]++;
	}
	
	for (int i = 0; i < 26; i++){
		if (max < alpha[i]) max = alpha[i];
	}
	for (int i = 0; i < 26; i++){
		if (max == alpha[i]) printf("%c", i + 97);
	}
	return 0;
}

 

초반에는 불필요한 코드들이 많아서 시간 초과가 몇 번이나 나왔다. 아래는 시간 초과가 떴을 때의 코드의 일부분이다.

	while (1){
		gets(text);
		if (strlen(text) == 0) break;
		
		for (int i = 0; i < strlen(text); i++){
			if (text[i] != '\0') alpha[text[i] - 97]++;
		}
	}

 

한 문장씩 입력받고, 입력받은 문장을 인덱스를 이용해 훑으며 알파벳 개수를 세는 방식이었다. 이후 나는 '문장'을 입력받는다는 생각을 버리고, '알파벳 하나'를 입력받을 때마다 알파벳 개수를 세기로 했다.

Comments