https://www.acmicpc.net/problem/1157
alpha 배열을 초기화해줘야 한다는 것은 생각도 못하고 엄한 것만 고치다가 오답률만 더 늘어버렸다. ㅎㅎ
항상 변수 선언하면 초기화부터 하고 사용하자...
한 가지 주의해야 할 점❗️
문자를 알파벳으로 출력하고 싶은 경우 printf 함수를 쓰면 "%c"로 출력만 해주면 되지만
cout으로 출력하는 경우에는 출력문에서 타입 변환을 할 수 없기 때문에
사전에 원하는 타입으로 선언한 변수에 값을 저장해서 형 변환을 해준 뒤에 출력해줘야 한다.
따라서 int 형 변수에 'A'를 더하면 대문자 아스키코드값이 되고,
이를 char 형 변수에 넣어준 뒤 출력하면 대문자가 출력된다~!
내 코드(C++)
// [1157] 단어 공부
// https://www.acmicpc.net/problem/1157
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string word;
char ans;
int alpha[27] = {0,}, cnt = 0, max = -1, maxi = -1;
cin >> word;
for(int i = 0 ; i < word.size() ; i++) {
// 대문자인 경우
if(65 <= word[i] && word[i] <= 90) {
alpha[word[i] - 'A']++;
}
// 소문자인 경우
else {
alpha[word[i] - 'a']++;
}
}
for(int i = 0 ; i < 27 ; i++) {
if(alpha[i] > max) {
cnt = 0;
max = alpha[i];
maxi = i;
}
else if(alpha[i] == max) {
cnt++;
}
}
// 가장 많이 사용된 알파벳이 여러개인 경우
if(cnt > 0) {
cout << '?' << '\n';
}
else {
// 인덱스를 문자로 변환
ans = maxi + 'A';
cout << ans << '\n';
}
}
반응형
'Baekjoon > 문자열' 카테고리의 다른 글
[20291] 파일 정리 (0) | 2022.06.21 |
---|---|
[17413] 단어 뒤집기2 (0) | 2022.06.21 |
[11720] 숫자의 합(C / C++) (0) | 2020.06.27 |
[8958] OX퀴즈 (0) | 2020.06.22 |
[1032] 명령 프롬프트 (0) | 2020.06.21 |