가장 많이 사용된 알파벳을 구할 때 중요한 점은 알파벳을 대문자든 소문자든 상관없이 같은 문자로 봐야한다.
따라서 소문자인 경우 97을 빼서 'a' 부터 0번 문자로 사용하고
대문자인 경우 65를 빼서 'A' 부터 0번 문자로 사용한다.
아스키 코드와 관련된 값은 다음과 같다.
https://ko.wikipedia.org/wiki/ASCII
ASCII - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문
ko.wikipedia.org
위와 같은 방식으로 문자의 번호를 정햇다면, 입력 문자열을 순회하여 문자가 몇개 있는지 검사한다.
검사하는 방식은 아래와 같다.
for(int i=0;i<input.length();i++) {
if(input[i]<97) alpha[input[i] - 65]++;
else alpha[input[i] - 97]++;
}
검사 절차 이후 배열에 가장 큰 값이 여러개 있다면 "?"를 출력하거나, 해당 문자를 출력한다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int> alpha;
alpha.assign(26,0);
int cnt =0;
string input;
cin >> input;
for(int i=0;i<input.length();i++) {
if(input[i]<97) alpha[input[i] - 65]++;
else alpha[input[i] - 97]++;
}
int max = 0, max_indx=0;
for(int i=0;i<26;i++) {
if(max<alpha[i]) {
max=alpha[i];
max_indx = i;
}
}
for(int i=0;i<26;i++) {
if(max==alpha[i]) cnt++;
}
if(cnt>1) cout << "?";
else cout << (char)(max_indx+65);
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 5] 1181번 단어 정렬 (0) | 2023.10.03 |
---|---|
[Silver 4] 1018번 체스판 다시 칠하기 (0) | 2023.10.03 |
[Bronze 1] 1546번 평균 (2) | 2023.10.02 |
[Bronze 1] 1259번 팰린드롬수 (0) | 2023.10.02 |
[Bronze 1] 2609번 최대공약수와 최소공배수 (0) | 2023.10.02 |