2016년 11월 8일 화요일

Algospot Jaeha’s Safe 계속 틀린 이유...아...

이 문제는 분명 입력으로 들어오는 스트링의 제한이 10000이하라고 되어있고, 계산시 배열을 2배하는 것이 필요해서 배열의 크기를 20001로 잡고 했는데 오답이 나서 40001로 잡고 제출했더니 맞는 것이었다. 그래서 20001에서 40001까지 올려가면서 해봤는데, 계속 오답이다가 40000에서 런타임 에러까지...음 그리고 내가 코드에 들어오는 데이터의 길이가 10000보다 크면 무한 루프가 실행되게 해두었는데도 실행이 안된 것을 보면 데이터에는 문제가 없다. 결국 계속 오답이다가 40000에서  런타임 에러를 받고 나서 조금 느낌이 왔다. 정말 40000까지 접근하는 것 같았고, 도대체 어디서? 고민하다가 알게 되었다.

나는 char 배열을 str1, str2 두 개만 사용하는데, 그래서 문제가 생긴 것이다. 예를 들어 str2를 2배하면 str1을 입력받고, str2를 또 2배하게 된다. (내 코드에서..) 결국 str2를 2배해준 후 그대로 놔두기 때문에 이런일이 발생하는 것이다. 해결책으로는 그냥 str1을 사용했으면 '\0'(NULL)을 2배하기 전의 위치에 넣어주면 될 것이다.

고쳐서 AC를 받았다. 정말 감사하면서 열심히 해야겠다. 이번 실수는 어떻게 찾았는지 믿기지 않는다. 정말 찾기도 힘들었고, 길이를 40001로 설정하면 맞으니 그냥 데이터 문제인가 보다 혹은 귀찮아서라도 그냥 넘어갈 수 있었는데, 다행이다 이렇게 알게되니 기분 좋다.

댓글 없음:

댓글 쓰기