cyphen156
백준-심화 1 1157 단어 공부 본문
대소문자 구분 없이 알파벳 갯수를 세어 가장 많이 나온 철자를 리턴하면 되는 프로그램
문자열 입력 받고 전부 대/소문자로 변환한 뒤 카운팅 하거나 둘을 동시에 처리하면 된다.
아스키 값을 기준으로 처리하면 편하다.
제약사항
- 0 <= strlen <= 1,000,000
- 최빈값이 두 개 이상이라면 '?'를 출력하라
주의 사항
없다.
CPP 풀이
단어 공부_1157.cpp
/**
* 백준 단어 공부_1157
* 대소문자 구분 없이 알파벳 갯수를 세어 가장 많이 나온 철자를 리턴하면 되는 프로그램.
*
* 제한사항
*****************************************
* 0 <= strlen <= 1,000,000 *
* if most Used Alpha Case is not only One
* return '?' *
*****************************************
*
*
*
* 주의
*
*
* 풀이시간 60분
*/
#include <iostream>
#include <cctype>
using namespace std;
int main(void)
{
int alpha[26] = { 0 }; // char cnt
int mostManyUsed = -1; // char index
bool isMultiple = false;
string str;
cin >> str;
// 문자열 빈도 누계
for (int i = 0; i < str.length(); ++i)
{
int idx = toupper(str[i])-'A';
alpha[idx]++;
}
// 0번 인덱스가 문제가 되는디...
for (int i = 0; i < 26; ++i)
{
if (alpha[i] > alpha[mostManyUsed] || i == 0)
{
mostManyUsed = i;
isMultiple = false;
}
else if (alpha[i] == alpha[mostManyUsed])
{
isMultiple = true;
}
}
if (isMultiple)
{
cout << '?' << endl;
}
else
{
cout << char(mostManyUsed + 'A') << endl;
}
return 0;
}
모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리 에 있습니다.
Workspace/알고리듬 풀이 at main · cyphen156/Workspace
Studying . Contribute to cyphen156/Workspace development by creating an account on GitHub.
github.com
'컴퓨터공학 > 알고리듬 풀이' 카테고리의 다른 글
백준-심화 1 1316 그룹 단어 체커 (0) | 2025.01.31 |
---|---|
백준-심화 1 2941 크로아티아 알파벳 (0) | 2025.01.24 |
백준-심화 1 10988 팰린드롬인지 확인하기 (0) | 2025.01.23 |
백준-심화 1 2444 별 찍기 - 7 (0) | 2025.01.23 |
백준-심화 1 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2025.01.20 |