cjy0019   2년 전

아니면 제가 틀린건가요?


예제는 잘 나오는데 뭐가 문제일까요????

wizardrabbit   2년 전

안녕하세요? 질문자님의 코드를 디버깅한 끝에 맞았습니다!! 를 받아 냈으며, 그러기 위해 세 가지를 고쳤습니다.

1) 입력 파일의 경로 문제

let input = fs.readFileSync('./input.txt').toString().split('');

질문자님의 코드를 처음 제출했을 당시 ENOENT 런타임 에러가 발생했습니다. ENOENT 런타임 에러는 해당하는 경로에 파일이 존재하지 않음을 의미합니다. 이 부분은 Node.js로 코딩하시는 분들의 경로가 다양해서 제가 잘 모르는 부분입니다만, ./input.txt 가 올바른 경로가 맞는 건가요?

저는 Node.js로 코드를 제출할 때 이 경로를 사용합니다.

const input = fs.readFileSync('/dev/stdin').toString().split('');

2) 입력되는 데이터는 불필요한 공백 및 줄바꿈 문제가 제거되는 과정이 필요합니다.

이 부분은 빈번하게 발생하는 문제이므로 제가 예전에 적은 답변을 첨부하는 것으로 설명을 대신하겠습니다. https://www.acmicpc.net/board/...

한 줄로 요약하면, Node.js에서는 입력을 받아온 것을 그대로 사용할 경우 불필요한 줄바꿈 문자 및 공백이 제거되지 않아 코드가 오작동할 수 있으므로, 대부분의 상황에서는 trim() 사용이 필요합니다.

3) 14번째, 22번째 줄의 for문이 서로 반대로 적용된 것 같습니다.

우선 1보다는 0이 사전순으로 앞선다는 것은 알고 계실 것입니다. 그래서 질문자님께서는 최대한 사전순으로 앞서는 수를 만들기 위해 앞쪽에 있는 1을 최대한 제거하고, 뒤쪽에 있는 0을 제거하는 방법을 사용하시려고 하셨을 것입니다.

이 부분이 반대로 적용되고 있어 작성하신 코드는 앞쪽에 있는 0을 최대한 제거하고, 뒤쪽에 있는 1을 최대한 제거하고 있습니다.

이 세 가지를 적절히 수정해 주시면 될 것 같습니다! 문제 해결에 도움이 되었기를 바랍니다.

wizardrabbit   2년 전

경로를 './input.txt' 로 입력해 봤을 때의 ENOENT 결과를 받은 코드입니다.

http://boj.kr/0738da97e983450d...

cjy0019   2년 전

wizardrabbit 친절한 답변 정말 감사드립니다.

1번은 vscode에서 복붙해서 옮기느라 코드가 잘못 들어갔네요ㅠㅠ 

2번은 미처 생각못했던 부분인데 배워갑니다!

3번까지 해결해버리니 정답이네요!! 감사합니다!! 아프로도 많은 도움 부탁드릴게요!

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