jsdksajdlk   6년 전

#include <stdio.h>
int s[26] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 };
int main() {
    int result = 0;
    for (char c; ~scanf("%c", &c);) result += s[c - 'A'];
    printf("%d", result);
    return 0;
}

위의 코드는 s 배열을 전역 변수로 선언한 것인데 이 코드는 정답이라고 나옵니다.

그런데 s 배열을 main 함수 안에 지역변수로 선언하면 틀렸다고 나옵니다.
무엇이 문제일까요?
P.S s배열을 지역변수로, result를 전역변수로 선언해도 마찬가지로 틀렸다고 나옵니다.

djm03178   6년 전

입력의 끝에 개행 문자가 있는 경우가 있는가 봅니다. 아마도, 그 때문에 어딘가에서 배열 범위를 초과한 경우가 있으나 이렇게 작성한 경우에는 그 자리에 (어째서인지는 모르지만) 0이 있어서 result의 값이 변하지 않아서 맞게 나온 거라고 생각됩니다.

jsdksajdlk   6년 전

아~ 그런 경우가 있을 수 있겠네요. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.