10개의 댓글이 있습니다.
-
-
wayway -
@Being님 위의 방법대로 수정하여 정답을 얻어냈고 이 또한 동일한 코드이기에 제 지식선에선 다른 원인을 생각하지 못하여 추측해보았습니다(제가 볼땐 저 코드의 논리는 틀리지 않았기에). 말씀대로 무작정 다른 탓할 것을 찾는 것은 좋지못하지만 자신의 불완전성을 경계할 뿐만 아니라 다른 외부요인도 같이(생각해볼수있는것은모두) 고려해보는 것은 필요하다고 생각합니다. 저는 컴파일러가 문제있다고 주장하는게 아닐뿐더러 이를통해 뭔가를 배웠으며, 앞으로도 이 컴파일러에 적응하기 위해 이런저런 방법을 생각해보며 그 원인에 대해서도 간단히 추측해본것입니다.
10년 전 link
-
-
-
VOCList -
제가 위에 언급한 힌트를 가지고 충분히 고민하신 뒤 열어보시는 걸 추천합니다.
for(int i=1; pword[n][i] != '\0' ; i+=2)
위 for문은 1번 인덱스, 3번 인덱스, ... 를 계속 보며 배열 안의 내용이 \0 이 등장하기 전까지 루프를 계속 실행합니다.
스트링의 길이가 100이라고 생각해봅시다. 99번 인덱스는 마지막 캐릭터가 들어 있는 변수이기에 \0이 아닐 것이고 루프 안의 내용이 실행되며, 루프가 끝난 후 \0인지 확인하게 되는 배열의 인덱스는 101입니다.
하지만 변수 선언단에서 볼 수 있듯 현재 선언하신 배열은 인덱스를 0 ~ 100까지만 가지고 있습니다. 101번 인덱스는 현재 선택하신 배열에서는 참조해서는 안되는 인덱스입니다.
wayway님이 어떤 수정을 시도하신건지는 잘 모르겠으나, 수정 내용에서 결과적으로 이 부분이 고려되지 않았다면 배열에 들어가는 쓰레기값에 의해서 우연히 Accepted일 가능성이 크다고 봅니다.
10년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
xglove1
#include
int main(){
int tCase;
char pword[10][101] = {'\0'};
char buf;
scanf("%d", &tCase);
scanf("%c", &buf);
for(int n = 0 ; n < tCase; n++)
gets(pword[n]);
for(int n = 0 ; n < tCase; n++){
for(int i=0; pword[n][i] != '\0' ; i+=2)
printf("%c",pword[n][i]);
for(int i=1; pword[n][i] != '\0' ; i+=2)
printf("%c",pword[n][i]);
printf("\n");
}
getchar();
return 0;
}
10년 전