위 소스를 출력해보면 문제의 답보다 훨씬 많은 값들이 출력됩니다.
문제는 10보다 큰 숫자를 계산할 때 틀리는데, 10으로 만들어지는 수는 11인데, 위 소스에서는 20이 만들어지고,
50으로 만들어지는 수는 55인데 위 소스는 100이 만들어집니다.
18라인의 c*10 부분에서 문제가 되는 것 같습니다.
두번째 문제는 9999 와 같은 숫자로 만들어지는 숫자는 10000 을 넘어가서 메모리 침범이 일어납니다.
4673번 - 셀프 넘버
1. 위 소스에서 m == 10 일때에는 23,24 모두 안타게 되겠네요.
tmp 가 10 미만이면 항상 c == 0 입니다. 따라서 tmp 에 대한 조건문이 의미가 없을 것 같습니다.
2. 셀프 넘버 확인 방법이 self 배열에 1을 넣는 것인데, 원래 1이 들어가 있으면 안될 것 같습니다.
self 배열을 이렇게 쓸꺼면 11 라인에서 전부 0으로 초기화하는 것이 나을 것 같습니다.
3. self_num 함수가 int 리턴값을 줄거라고 하고는 아무값도 주지 않으니 비정상 동작을 하네요. (ideone.com 사이트에서..)
이것도 수정이 필요합니다.
댓글을 작성하려면 로그인해야 합니다.
develop 3년 전 1
7줄, 10줄
범위가 10000이기 때문에
i의 범위를 0~9999로 지정하고
self[0] = 1이 저장되도록 i+1을 해주었습니다.
m도 동일한 방식입니다.
19줄
상기 방식대로 배열에는 1 작은 값을 저장해야 하므로
self[result-1]을 저장했습니다.
그리고 result로 나온 값은 누군가의 셀프넘버 이므로
분류를 위해 self[result-1] 을 0으로 저장했습니다.
25줄, 26줄
self[i]가 0이 아닌 경우 -> 셀프 넘버가 없는 경우 를 출력했습니다.
왜 출력초과가 나오는지 잘 모르겠습니다 ㅠ