https://www.acmicpc.net/problem/1157
사고과정)
문자열들을 입력받고, 문자열의 알파벳 갯수에 따라 알파벳순으로 정렬한 배열을 만든다.
int array[26] = {0}으로 초기화하고, 갯수들을 넣어주면 됨.
그런다음, 가장 많은 갯수에 해당하는 알파벳을 찾고 (여기선 *max_element를 활용)
가장 많은 갯수가 중복되면, ?을 출력. 아니면 그냥 해당 알파벳을 출력해주면 된다.
#include <iostream>
#include <string>
#include <algorithm>
#define NUM 26
using namespace std;
int main()
{
string input;
cin >> input;
int array[NUM] = { 0, };
int length = input.length();
for (int i = 0; i < length; i++)
{
if ('A' <= input[i] && input[i] <= 'Z') // Big
array[input[i] - 'A']++;
else if ('a' <= input[i] && input[i] <= 'z') // small
array[input[i] - 'a']++;
}
int max = *max_element(array, array + NUM);
int count = 0; int index = 0;
for (int i = 0; i < NUM; i++)
{
if (array[i] == max)
{
count++;
index = i;
}
}
if (count != 1)
{
cout << '?';
return 0;
}
else
{
cout << char(index + 'A');
return 0;
}
}
'백준 문제풀이 > 브론즈1' 카테고리의 다른 글
백준 1453번 - 피시방 알바 (0) | 2021.10.28 |
---|---|
백준 1259번 - 팰린드롬수(palindrome) (0) | 2021.10.28 |
백준 1145번 - 적어도 대부분의 배수 (0) | 2021.10.28 |
백준 1110번 - 더하기 사이클 (0) | 2021.10.21 |
백준 1032번 - 명령 프롬프트 (0) | 2021.10.21 |