반응형
https://www.acmicpc.net/problem/1157
- 문제
해설
알파벳 사용 횟수를 저장하는 배열 cnt를 초기화한 후
알파벳 별로 사용 횟수를 증가시켜준다.
알파벳 사용 개수의 최대값인 max를 통해 최댓값인 경우의 수를 세어 1인 경우 사용 횟수가 max인 알파벳 출력
경우의 수가 2 보다 클 경우 ?를 출력한다.
코드
c
#include <stdio.h>
#include <string.h>
int main() {
int cnt[26] = { 0, };
int max = -1; // max: 알파벳 사용 개수의 최대값
char res; // 사용 개수가 max인 알파벳
char s[1000000];
scanf("%s", s);
int t = strlen(s);
for (int i = 0; i < t; i++) {
if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 'a' + 'A'; // 소문자는 대문자로 처리
if (++cnt[s[i] - 'A'] > max) {
max = cnt[s[i] - 'A'];
res = s[i];
}
}
int check = 0; // 가장 많이 사용된 알파벳이 여러 개인 지 체크
for (int i = 0; i < 26; i++) {
if (max == cnt[i]) check++;
}
if (check == 1) printf("%c", res);
else printf("?");
return 0;
}
c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int cnt[26] = { 0, };
int max = -1; // max: 알파벳 사용 개수의 최대값
char res; // 사용 개수가 max인 알파벳
string s;
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 'a' + 'A'; // 소문자는 대문자로 처리
if (++cnt[s[i] - 'A'] > max) {
max = cnt[s[i] - 'A'];
res = s[i];
}
}
int check = 0; // 가장 많이 사용된 알파벳이 여러 개인 지 체크
for (int i = 0; i < 26; i++) {
if (max == cnt[i]) check++;
}
if (check == 1) cout << res;
else cout << "?";
return 0;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 2908번 상수 - [c/c++] 풀이 (1) | 2022.10.18 |
---|---|
[BOJ/백준] 1152번 단어의 개수 - [c/c++] 풀이 (1) | 2022.10.18 |
[BOJ/백준] 2675번 문자열 반복 - [c/c++] 풀이 (1) | 2022.10.15 |
[BOJ/백준] 10809번 알파벳 찾기 - [c/c++] 풀이 (0) | 2022.10.14 |
[BOJ/백준] 11720번 숫자의 합 - [c/c++] 풀이 (0) | 2022.10.14 |
댓글