백준(C언어)/22년 7월

7월 22일(금), 23일(토) - 6단계(1157번 *실패->성공)

C0MPAS 2022. 7. 22. 23:35

구글링을 통해 참조 많이한 코드 -> 복습 및 코드 다시 짜보는 과정 필요

6단계 - 1157번

 

1157번: 단어 공부

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

www.acmicpc.net

 

문제점

 

 

최초 풀이

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>

int main(void)
{
	int i, result_1;
	int result_2 = 0;
	int alphabet[26] = { 0, };
	char word[1000000];
	scanf("%s", word);

	for (i = 'a'; i <= 'z'; i++)
	{
		for (int j = 0; word[j] != NULL; j++)
		{
			if (word[j] == i)
			{
				alphabet[i - 'a']++;
			}
		}
	}

	for (i = 'A'; i <= 'Z'; i++)
	{
		for (int j = 0; word[j] != NULL; j++)
		{
			if (word[j] == i)
			{
				alphabet[i - 'A']++;
			}
		}
	}

	int max = alphabet[0];
	for (int i = 1; i < 26; i++)
	{
		if (max < alphabet[i])
		{
			max = alphabet[i];
			result_1 = i;
		}
	}

	for (int i = 0; i < 26; i++)
	{
		if (max == alphabet[i])
		{
			result_2++;
		}
	}

	if (result_2 > 1)
	{
		printf("?\n");
	}
	else
	{
		printf("%c", result_1 + 'A');
	}
	return 0;
}

여기까지 코드를 작성했는데,

Mississipi / zZa / z는 제대로 결과값이 나오지만

baaa 는 결과값 자체가 출력이 되지 않고 있는 상황(~7월 22일까지의 풀이)

////////////////////////////////////////////////////////////////////////////////////////

 

최종 정답풀이

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>

int main(void)
{
	int i;
	int	result_1 = 0;
	int result_2 = 0;
	int alphabet[26] = { 0, };
	char word[1000000];
	scanf("%s", word);

	for (i = 'a'; i <= 'z'; i++)
	{
		for (int j = 0; word[j] != NULL; j++)
		{
			if (word[j] == i)
			{
				alphabet[i - 'a']++;
			}
		}
	}

	for (i = 'A'; i <= 'Z'; i++)
	{
		for (int j = 0; word[j] != NULL; j++)
		{
			if (word[j] == i)
			{
				alphabet[i - 'A']++;
			}
		}
	}

	int max = alphabet[0];
	for (int i = 1; i < 26; i++)
	{
		if (max < alphabet[i])
		{
			max = alphabet[i];
			result_1 = i;
		}
	}

	for (int i = 0; i < 26; i++)
	{
		if (max == alphabet[i])
		{
			result_2++;
		}
	}

	if (result_2 > 1)
	{
		printf("?");
	}
	else
	{
		printf("%c", result_1 + 'A');
	}
	return 0;
}

 

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