처음에 C++로 구현하려고 했는데 계속 런타임 에러가 떴다.
#include <stdio.h>
#include <string.h>
char str[1000001] = { 0, };
int main() {
int alpha[26] = { 0, };
unsigned int max = 0;
scanf("%s", str);
unsigned int length = strlen(str);
for (int i = 0; i < length; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
alpha[str[i] - 'A']++;
}
if (str[i] >= 'a' && str[i] <= 'z') {
alpha[str[i] - 'a']++;
}
}
for (int i = 1; i < 26; i++) {
if (alpha[max] < alpha[i]) max = i;
}
for (int i = 0; i < 26; i++) {
if (i == max) continue;
if (alpha[max] == alpha[i]) {
printf("?");
return 1;
}
}
printf("%c", 'A'+max);
return 0;
}
왜 안되는지는 아직도 모르겠다. str이나 alpha 변수에서 인덱스를 잘못 참조한거 같은데 코드를 보면 인덱스가 음수로 가거나 잘못된 값을 참조할 것 같진 않는데.. 결국엔 파이썬으로 구현했다.
str = input()
str = str.upper()
alpha = []
for i in range(0,26):
alpha.append(0)
for i in str:
alpha[ord(i)-65]+=1
max_value = 0
idx = -1
flag = False
for i in range(0, 26):
if max_value < alpha[i]:
max_value = alpha[i]
idx = i
for i in range(0, 26):
if i == idx:
continue
if max_value == alpha[i]:
flag = True
if flag:
print("?")
else:
print(chr(idx+65))
'Development' 카테고리의 다른 글
BOJ 1002 (터렛) (0) | 2021.01.10 |
---|---|
BOJ 1316(그룹 단어 체커) (0) | 2021.01.07 |
BOJ 10828(스택), 10799(쇠막대기) (0) | 2020.12.24 |
CodeUp 기초100제 (바둑알 십자뒤집기) (0) | 2020.10.18 |
Win32 API 정리 (0) | 2019.03.06 |