https://www.acmicpc.net/problem/1157
(21.08.08)
1157번: 단어 공부 - C언어 풀이
[소스코드]
#include <stdio.h>
#include <string.h>
// [baekjoon] 1157번 - 단어 공부
int main() {
char S[1000001];
int cf[123] = { 0 };
scanf("%s", &S);
int i = 0;
while (S[i] != '\0') {
if (S[i]>=97) cf[S[i]-32]++;
else cf[S[i]]++;
i++;
}
int maxj = 0;
int max = 0;
for (int j = 65; j <= 90; j++) {
if (cf[j] > max) {
max = cf[j];
maxj = j;
}
else if (cf[j] == max) {
maxj = 100;
}
}
if (maxj == 100) printf("?");
else printf("%c", maxj);
}
별 생각없이 풀었더니 코드가 좀 난잡한 것 같다.
cf[S[i]]++;
이런식으로 코드를 짜본 건 처음이다.
처음에
int cf[123] = { 0 }; 을
char cf[123] = { 0 }; 로 써놓아서 백준에서 계속 틀렸다고 나왔다.
https://www.acmicpc.net/board/view/30509
위의 글 2번을 보고서 소름돋았다. 저 글 안읽었으면 아직도 해매고 있었을 듯 싶다.
아마 쉽게 하는 실수 중 하나인 듯 한데, 이번 실수를 계기로 다음엔 조심해야겠다.
'학습 정리 > 👨💻 PS Study' 카테고리의 다른 글
[C] 백준 13015번 - 별찍기 23 (0) | 2022.07.07 |
---|---|
[C] 백준 10808번 - 알파벳 개수 (0) | 2022.07.06 |
[C] 백준 14582번 - 오늘도 졌다 (0) | 2022.07.06 |
[C] 백준 11170번 - 0의 개수 (0) | 2022.07.06 |
[C] 백준 21567번 - 숫자의 개수 2 (0) | 2022.07.06 |