sharpnpen   6년 전

입력에 대해 출력값은 맞게 나오는데,

입력값을 받으면 바로 출력값이 나오는 형식으로 코드를 짜서, 틀렸다고 나오는 건가요??

입력값을 다 받아놓은 후에, 결과값을 한꺼번에 내놓는 건 혹시 어떻게 해야 되나요??

아무리 생각해도 코드가 떠오르질 않네요..

배열을 써야 되나요??. 도와주세요..ㅠㅠ

allkanet72   6년 전

정답 처리 됩니다.

입력 넣자마자 바로 출력되도 상관없구요. 보통 이렇게 합니다. 

그리고 테스트 케이스 조건 안줘도 됩니다. 아래처럼 해보세요

int main() {
int t;
int i;

scanf("%d", &t);

for (i = 0; i < t; i++) {
int a;
scanf("%d", &a);
fibonacci(a);
printf("%d %d \n", z, k);
z = 0; k = 0;
}


}

sharpnpen   6년 전

그렇네요. 님이 하신 말처럼 테스트 케이스 조건이 없으니까 정답처리가 나오네요. 해결해주셔서 감사합니다.^^

제 생각엔 이 문제에서는 입력값을 아래와 같이 이렇게 주라고 나와있는데, 문제 푸는 사람 입장에서는 오해의 여지를 다분히 가질 수 있을 것 같습니다.

"첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 구성되어있다."

"첫째 줄에 N이 주어진다. N은 40보다 작거나 같은 자연수 또는 0이다."

즉, 테스트 케이스를 40개 이하로 보는 경우와, 테스트 케이스 설정 이후에 각각의 입력값을 받을 때 그 입력값들을 항상 40이하로 받아야 한다고 보는 경우로

나눠서 생각할 수도 있을 것 같네요. 그렇게 봤을 때, 저처럼 테스트 케이스를 40개 이하로 제한하는 경우로 코드를 짰다면 오답이 됩니다.

반면, 후자의 경우 코드를 짜서 실행해 봤을 때 정답 처리가 됩니다.

따라서 문제 상에 오해의 소지가 다분히 있고, 굳이 문제를 조금 수정하자면,  "첫째 줄에 N이 주어진다. N은 40보다 작거나 같은 자연수 또는 0이다." 이라는 문장 대신에

"두번째 줄 부터 N이 주어진다. N은 40보다 작거나 같은 양의 정수이다." 라고 고쳐주면 조금 더 매끄럽지 않나 생각됩니다.


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