[백준 1157, Cpp] 단어 공부

나무에물주기·2022년 10월 21일
0

Coding Test

목록 보기
62/77
// 백준 1157 단어 공부

#include <iostream>
#include <string>

using namespace std;

int arr[26]; // 알파벳 a ~ z 배열 생성

int main()
{
    int max = 0, index = 0, count = 0; // 최대값, 주소, 예외처리 변수 생성
    string str; // 문자열 변수 생성
    cin >> str; // 문자열 입력

    for (int i = 0; i < str.length(); i++)
    {
        str[i] = toupper(str[i]); // 입력받는 문자열을 전부 대문자로 바꿔줌
        arr[str[i] - 65]++; // arr배열에[입력받은 문자열 요소의 정수값(아스키코드값) - 65]인덱스 + 1
    }
    for (int i = 0; i < 26; i++) // 알파벳 수(26) 만큼 반복
    {
        if (max < arr[i]) // max보다 arr[i]가 크면
        {
            max = arr[i]; // max에 arr[i] 대입
            index = i; // index 변수에 i 대입
        }
    }
    for (int i = 0; i < 26; i++) // 알파벳 수(26) 만큼 반복
    {
        if (max == arr[i]) // 만약 최대값을 가진 인덱스가 중복된다면
        {
            count++; // count 변수 + 1
        }
    }
    if (count > 1) // 만약 count변수가 1보다 크면(최대값 중복이 1개를 넘는다면)
    {
        cout << "?"; // 물음표 출력
    }
    else // 아니면
    {
        cout << char(index + 65); // index + 65를 char형변환 해서 출력
    }
    return 0;
}
profile
개인 공부를 정리함니다

0개의 댓글