본문 바로가기
백준 문제풀이

BOJ/10808

by alscks 2024. 1. 6.

ASCII 코드. 소문자 a는 98이다.

사실 그냥 문자로 경우를 나눠도 되지만 좀더 쉽게 해보려고..

문자열을 입력받아 정수형으로 출력해보면 ascii코드를 확인할 수 있다.

 

10808 알파벳 개수

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

char arr[100];
int alphabet[26];

scanf("%s", arr);

for (int i = 0; i < 26; i++) {
alphabet[i] = 0;
}

int i = 0;
while (arr[i] != NULL) {
int flag;
flag = (int)arr[i] % 97; //a의 아스키 코드는 97
alphabet[flag] = alphabet[flag] + 1;
i++;
}

for (int k = 0; k < 26; k++) {
printf("%d ", alphabet[k]);
}

return 0;

}

 

 

실행은 잘 되고 정답이지만 오류가 발생.

오류 코드

flag값이 alphabet의 인덱스 0~25를 벗어날 수 있기 때문.

(실제 입력되는 값은 알파벳 소문자이므로 채점 시에는 괜찮았다.)

if문을 통해 alphabet에 주어지는 인덱스 값을 제한해 주면 오류가 사라지는 것을 확인할 수 있다.

'백준 문제풀이' 카테고리의 다른 글

BOJ/2750  (1) 2024.01.06
BOJ/2979  (0) 2024.01.06
BOJ/2309  (0) 2024.01.06
BOJ/2798  (0) 2024.01.06
BOJ/17389  (0) 2024.01.05