c++

백준 c++ 1157 문제 풀이

psb08 2025. 4. 13. 12:32
728x90

문제 링크 : https://www.acmicpc.net/problem/1157

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 브론즈 1 문제 입니다.

문제명 : 단어 공부

 

내 코드

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

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	std::cout.tie(NULL);

    string word;
    cin >> word;

    vector<int> cnt(26, 0);
    int max = 0;
    char alpha = ' ';

    for (char c : word) 
    {
        if (c >= 'a' && c <= 'z')
        {
            c = c - ('a' - 'A'); 
        }

        cnt[c - 'A']++;
    }

    for (int i = 0; i < 26; ++i) 
    {
        if (cnt[i] > max) 
        {
            max = cnt[i];
            alpha = static_cast<char>(i + 'A');
        }
        else if (cnt[i] == max) 
        {
            alpha = '?';
        }
    }

    cout << alpha << endl;

}

 

문제 풀이 해석 내용

 

문자열 입력 처리

string word;
cin >> word;

사용자로부터 문자열 word를 입력받습니다.

 

 

알파벳 개수 카운트 배열 초기화

vector<int> cnt(26, 0);
int max = 0;
char alpha = ' ';

cnt 배열은 알파벳 대문자 A-Z의 개수를 저장하기 위해 크기가 26인 벡터로 초기화합니다.
max: 가장 많이 나타나는 알파벳의 개수를 저장합니다.
alpha: 가장 많이 나타나는 알파벳을 저장합니다.

 

 

알파벳 개수 세기

for (char c : word) 
{
    if (c >= 'a' && c <= 'z')
    {
        c = c - ('a' - 'A'); 
    }

    cnt[c - 'A']++;
}

입력된 문자열의 각 문자에 대해 반복합니다.
소문자일 경우 대문자로 변환합니다. (예: c - ('a' - 'A')).
해당 알파벳의 인덱스를 계산하여 cnt 배열에서 카운트를 증가시킵니다.

 

 

가장 많이 등장한 알파벳 찾기

for (int i = 0; i < 26; ++i) 
{
    if (cnt[i] > max) 
    {
        max = cnt[i];
        alpha = static_cast<char>(i + 'A');
    }
    else if (cnt[i] == max) 
    {
        alpha = '?';
    }
}

cnt 배열을 순회하면서 가장 많이 등장한 알파벳을 찾습니다.
현재 알파벳의 개수가 max보다 크면 max를 업데이트하고, alpha에 해당 알파벳을 저장합니다.
같은 최대 개수를 가진 알파벳이 또 발견되면 alpha를 ?로 설정합니다.

 

 

결과 출력

cout << alpha << endl;

최종적으로 가장 많이 등장한 알파벳 또는 ?를 출력합니다.

 

 

실행 결과

 

728x90

'c++' 카테고리의 다른 글

백준 c++ 13420 문제 풀이  (0) 2025.04.18
백준 c++ 10103 문제 풀이  (0) 2025.04.15
백준 c++ 1978 문제 풀이  (0) 2025.04.12
백준 c++ 1085 문제 풀이  (0) 2025.04.11
백준 c++ 27433 문제 풀이  (0) 2025.04.10