개발로그필름

[백준] C | 1157 | 단어 공부 본문

coding test/백준

[백준] C | 1157 | 단어 공부

yuullog 2022. 11. 15. 09:00
728x90
반응형
SMALL

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

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

코드 풀이

 

#include <stdio.h>
#include <string.h>

int main()
{
	char input[1000000];
	int count[26] = { 0, };
	int max;
	int select = 0;
	int result = 0;

	scanf("%s", input);
	int len = strlen(input); // 입력받은 문자열 길이 구하기

	// 소문자
	for (int i = 'a'; i <= 'z'; i++)
	{
		for (int j = 0; j < len; j++)
		{
			if (i == input[j])
				count[i - 'a']++;
		}
	}

	// 대문자
	for (int i = 'A'; i <= 'Z'; i++)
	{
		for (int j = 0; j < len; j++)
		{
			if (i == input[j])
				count[i - 'A']++;
		}
	}

	max = count[0]; // a(A) 개수를 max로 초기화 시키고
	for (int i = 1; i < 26; i++) // 알파벳 순서대로 돌면서
	{
		if (max < count[i]) // 개수가 많은 알파벳 있으면 max로 저장
		{
			max = count[i];
			select = i; // 해당 인덱스도 저장
		}
	}

	// 중복된 max값 있는지 찾는 과정
	for (int i = 0; i < 26; i++)
	{
		if (max == count[i]) // 같다면 result 증가
			result++;
	}

	if (result > 1) // 같은 max가 있다면 ? 출력
		printf("?\n");
	else // 아닐 경우 대문자로 출력해야 하므로 인덱스 값에다 A 더해주기
		printf("%c", select + 'A');
	return 0;
}
 

 

반응형
LIST
Comments