y2kdj9723   2년 전

질문글에 있는 반례들 다 해봤는데 제대로 나왔는데 어디서 놓쳤는지 잘 모르겠습니다. 고수님들 도와주십시오 ㅠㅠ

wizardrabbit   2년 전

안녕하세요? 확인 결과, 입력된 데이터에 trim()을 사용하지 않아 의도하지 않은 값이 들어가 결과가 다르게 나온 것이 원인이었습니다.

Node.js에서는 빈번하게 틀리는 원인이므로 설명은 https://www.acmicpc.net/board/...로 대체할 수 있을 것 같습니다.

작성하신 코드에서는 실제로 아래의 결과가 나옵니다(예제 입력 1 기준):

1) 동전들을 입력받을 때, 마지막에 개행 문자도 같이 입력받게 됩니다. 그래서 split('\n') 사용 이후 coins 배열은 아래와 같이 됩니다.

coins = ['1', '5', '10', '50', '100', '500', '1000', '5000', '10000', '50000', '']

2) 이후 코드의 4번째 줄에 의해 배열 내의 원소가 숫자로 바뀝니다. 여기서 의도치 않게 들어갔던 ''는 0이 됩니다.

coins = [1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000, 0]

3) coins 배열에 0이 섞여 있기 때문에, 10번째 줄에서 연산을 수행할 때 0으로 나누게 되므로 값이 무한대가 됩니다. 결론적으로 예제 입력 1에 대한 결과는

Infinity

가 되어 틀리게 됩니다.

도움이 되었기를 바랍니다!

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