단계별로 풀어보기 1157 단어 공부
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
STL transform
C++ 레퍼런스 - transform 함수
modoocode.com
STL 사용이 익숙하지 않으면 transform 부분을 소문자인지 대문자인지 구분해서 인덱스를 설정하면 됨.
소스 코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string word;
cin >> word;
int counts[26] = {0,};
transform(word.begin(), word.end(), word.begin(), (int(*)(int))toupper);
for(int i = 0; i < word.length(); i++){
counts[word[i] - 'A']++;
}
int maxVal = -1;
int index = -1;
bool repeat = false;
for(int i = 0; i < 26; i++){
if(maxVal < counts[i])
{
maxVal = counts[i];
index = i;
repeat = false;
}
else if (maxVal == counts[i]){
repeat = true;
}
}
if(repeat)
printf("?");
else
printf("%c", 'A' + index);
}
최대값이 반복되면 "?"를 출력하는 부분에서 이상하게 처리함.
이 문제는 최대값 구하는 방법을 우선으로 생각하고 반복되는 것은 단순하게 처리하면 된다.
'Problem Solving > 문제풀이' 카테고리의 다른 글
기타:: 0914 일기 (0) | 2022.09.14 |
---|---|
기타:: 0909 일기 (0) | 2022.09.09 |
[백준] 1316 그룹 단어 체커 C++ (0) | 2021.10.27 |
[백준] 1100 하얀 칸 C++ (0) | 2021.10.26 |
[백준] 1152 단어의 개수 C++ (0) | 2021.10.25 |