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 |