백준 알고리즘

[백준][C++] 1157번 : 단어 공부

탱글한푸딩 2024. 6. 12. 15:00
반응형

문제

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

 


코드

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string s;
    string alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int alpCount[26];
    int MAX = -1;
    char result;
    bool flag = false;

    cin >> s;

    for (int i = 0; i < s.length(); i++)
    {
        s[i] = toupper(s[i]);
    }

    // 0으로 배열 초기화
    for (int i = 0; i < 26; i++)
    {
        alpCount[i] = 0;
    }

    for (int i = 0; i < s.length(); i++)
    {
        for (int j = 0; j < alp.length(); j++)
        {
            if (s[i] == alp[j])
            {
                alpCount[j]++;
                break;
            }
        }
    }

    // ? 예외처리
    for (int i = 0; i < 26; i++)
    {
        if (alpCount[i] >= MAX)
        {   
            if (alpCount[i] == MAX)
            {
                flag = true;
            }
            else
            {
                flag = false;
                MAX = alpCount[i];
                result = alp[i];
            }
        }
    }

    if (flag == true)
    {
        result = '?';
    }

    cout << result << '\n';

    return 0;
}

풀이

toupper(a) : a값을 대문자로 변환하는 함수

tolower(a) : a값을 소문자로 변환하는 함수


s[i] = toupper(s[i]); : s배열의 i번째의 값을 대문자로 변환

반응형