[백준/BOJ] 1157. 단어 공부 [Bronze 1]

jychan99·2021년 10월 1일
0
post-thumbnail
  1. 단어 공부

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

그리디알고리즘은 아니지만 풀다가 좀 복잡한것 같아서 올리게 되었다.
분류는 구현, 문자열.

입력은 대문자 소문자로 입력받지만 판단할때는 대 소문자를 구분하지 않는다고 나와있다.
그럼그냥 소문자를 대문자로 만들어버리면된다.
그다음 문자마다 등장횟수를 다른 배열에 기록해서 만약 max값이 2개이상이 나오면 ?를찍고,
max값이 하나가 정해지면 그문자를 출력하면 된다.

code

#include <stdio.h>
#include <string.h>
int main()
{
    char s[1000000] = { 0 };
    int len = 0, i, j;
    int arr[26] = { 0 }, max = 0, flag=0, index = 0;
    scanf("%s", s);
    len = strlen(s);
    for (i = 0; i < len; i++)
        if (s[i] >= 'a' && s[i] <= 'z')
            s[i] -= 32;
    for (i = 0; i < len; i++)
        arr[s[i] - 65]++;
    for (i = 0; i < 26; i++)
        if (max < arr[i])
        {
            max = arr[i];
            index = i;
        }
    for (i = 0; i < 26; i++)
        if (index != i && arr[index] == arr[i])
            flag = 1;
    if (flag == 1)
        printf("?");
    else
        printf("%c", index + 65);
    return 0;
}
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글