문제는 이것입니다
https://www.acmicpc.net/problem/5622
제가 코드를 작성을 한 것이
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[16];
int alph[26]={0,};
int len,cnt=0,i;
alph[0]=3;
alph[1]=3;
alph[2]=3;
alph[3]=4;
alph[4]=4;
alph[5]=4;
alph[6]=5;
alph[7]=5;
alph[8]=5;
alph[9]=6;
alph+=6;
alph[11]=6;
alph[12]=7;
alph[13]=7;
alph[14]=7;
alph[15]=8;
alph[16]=8;
alph[17]=8;
alph[18]=8;
alph[19]=9;
alph[20]=9;
alph[21]=9;
alph[22]=10;
alph[23]=10;
alph[24]=10;
alph[25]=10;
scanf("%s",s);
len=strlen(s);
for(i=0;i<len;i++)
{
cnt+=alph[s[i]-65];
}
printf("%d",cnt);
return 0;
}
이것인데요 처음에 char 배열을 [15]로 해서 틀렸는데 나중에 혹시나 해서 [16]으로 하니까 맞더라고요??
문제에 보면 문자열은 15보다 작거나 같다고 되어있는데 [15]로 해도 어차피 [0]부터 값을 받으니까 15자리 문자열을 넣어도 결국에는 [14] 까지 받고 [15]에 NULL 들어가니까 상관없지 않나요? 왜 [15]는 틀리고 [16]은 맞는지 궁금합니다!!!!!!
마지막에 null문자가 들어가서 하나 더 크게 만들어줘야 함
[15]는 사이즈를 15로 만들겠다는 거여서 0~14까지밖에 안됨
0~14면 문자 15개가 들어갈 수 있는거 아닌가용??
네, 문자 15개가 들어갈 수 있지만 윗분 말씀 대로 문자열의 끝을 의미하는 null을 받을 수 있는 공간까지 포함해야 하기 때문에 원래 받을 길이+1로 선언해주시는게 좋아요
흠 그렇군요 감사합니다 선생님