jinzzangman   2년 전

알고리즘을 시작한지 별로 안되서 그런지 반례를 찾기가 어렵네요.ㅠ

예제나 질문에 있는 반례들을 집어넣었을때는 다되는데 문제점을 모르겠어요.

조언 부탁드립니다..

kiwiyou   2년 전

코드에 오류는 없으나 문제 입력 파일 맨 끝에 줄바꿈 문자가 존재해서 cnt가 한번 더 더해진 것으로 보입니다.

아래와 같이 고치면 맞았습니다!!!를 받습니다.

jinzzangman   2년 전

답변 너무너무 감사드립니다^^

혹시 파일 맨 끝에 줄바꿈 문자가 존재하는지 어떻게 아셨나요??

비쥬얼스튜디오코드 프로그램으로 알고리즘 테스트합니다. txt 파일에 입력값을 넣는 방식으로 테스트하고 있습니다.  궁금한점은 trim()을 사용해도 \r이 존재하는데 없앨 수 있나요? 아니면 항상 밑에 코드처럼 해야하나요..? 백준에서 테스트할때는 왜 \r가 없는지 궁금합니다.

const input = require('fs') .readFileSync(filePath) .toString() .trim() .split('\r\n'); 

kiwiyou   2년 전

1. 파일 맨 끝에 줄바꿈 문자가 있는 경우가 종종 있습니다. 마지막 문자가 trim으로 제거되는 것으로 보아 줄바꿈 문자가 있는 것으로 생각했습니다.

2. 줄바꿈 문자로 윈도우에서는 \r\n을, 리눅스(채점 환경)에서는 \n을 사용합니다. (\r만을 쓰는 경우도 존재) trim()은 문자열 양 끝에 존재하는 여러 개의 공백 문자를 삭제하는데, 아마 질문하신 의도는 각 줄에 있는 (즉, 입력 문자열의 가운데 부분에 있는) \r을 없애려고 하시는 것 같습니다. 리눅스와 윈도우 모두에서 같은 동작을 원하시면 .split(/\r?\n/)을 사용하시면 될 겁니다.

참고로, 스페이스와 줄바꿈 모두를 기준으로 나누고 싶으시다면 .split(/\s/)를 쓰실 수 있습니다.

jinzzangman   2년 전

아하 많이 배웠습니다. 너무 감사합니다!^^

007ask   2년 전

와 ㅠㅠ 지금까지 다른사람이랑 코드의 차이는 없었는데 자꾸 안되서 짜증났었는데.. 감사합니다.

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