백준 2720번을 풀어보았다.
간단한 문제이고, 처음 작성한 풀이는 다음과 같다.
let [T, ...input] = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(Number)
coin = [25, 10, 5, 1]
let output = ''
for (let i = 0; i < input.length; i++) {
for (const c of coin) {
output += Math.floor(input[i]/c) + ' '
input[i] %= c
}
output = output.trim()
output += '\n'
}
console.log(output.trim())
로컬에서 테스트할 때는 정답을 잘 출력하였는데 백준에 제출하니 틀렸다고 나왔다.
질문게시판 글을 참고하여 수정하였다.
let [T, ...input] = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(Number)
coin = [25, 10, 5, 1]
let output = ''
for (let i = 0; i < T; i++) {
for (const c of coin) {
output += Math.floor(input[i]/c) + ' '
input[i] %= c
}
output = output.trim()
output += '\n'
}
console.log(output.trim())
아마 백준의 입력은 \n로 끝나지 않았고,
때문에 반복의 종료를 i < input.length로 설정하니 테스트 케이스가 아닌 것까지 반복문을 실행했던 듯 하다.
반복의 종료를 i < T로 수정하니 테스트 케이스까지만 반복문을 실행하여 통과할 수 있었다.
로컬에서 테스트 할 때는 정답을 잘 출력하였는데 백준에 제출하니 틀렸다고 나올 때 종종 이런 경우가 있는 것 같다.
참고) 백준 10951번