eastho0116   2년 전

문제가 정말 감도 안 잡힙니다... 어떻게 해결해야할지를 모르겠어요... 제가 비슷하게는 풀었나요....?

bamgoesn   2년 전

Number.Get(s) 함수에서 cnt는 s의 자릿수가 아니라, 그보다 1 작은 수를 저장합니다. 따라서 31, 43행에서 루프 조건을 i<=cnt로 수정하셔야 합니다.

36행을 포함하는 루프에서 sw의 값은 언제나 0입니다. 루프가 돌 때마다 sw가 0의 값을 갖고 다시 선언되기 때문입니다.

한편 arr[i]의 값을 10으로 나눈 나머지로 바꾸는 것은 한 번만 수행하면 충분합니다. 예를 들어 arr[i]가 142였다면, arr[i]%=10을 한 번만 수행해도 arr[i]가 2가 됩니다. 사실 애초에 arr[i]가 한 자릿수여도 arr[i]%=10을 수행해도 되기 때문에, 36행의 루프는 없애고 37행의 arr[i]%=10만 남기는 게 맞습니다.

접근 방법은 올바르기 때문에 위 세 가지만 수행하셔도 정답을 받으실 수 있습니다. 다만 d(n)을 구할 때 각 자릿수를 저장하는 배열과 클래스까지 선언하는 것이 많이 거창합니다. 다른 분들의 코드를 참고해보면서 어떻게 하면 더 단순하게 각 자릿수를 뽑아낼 수 있는지 생각해보시면 좋을 것 같습니다.

eastho0116   2년 전

헉..이렇게 자세하게 써주시다니... 감도 못 잡고 있었는데.. 정말 감사합니다!! 

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