백준(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;
}