반응형
문제
- 백준으로 자바스크립트 문제를 풀다보면 입력 값 때문에 제출 시 에는 문제가 없지만 내가 사용하고 있는 pc에서는 제대로 출력이 안 되는 문제가 있다.
예 백준 9086번
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");
const t = input[0];
for (i = 1; i <= t; i++) {
let End = input[i].length - 1;
console.log(input[i].charAt(0) + input[i].charAt(End));
}
출력값
AE
OO
AB
내 pc에서 출력 값
A
O
AB
- 이것을 제출하면 위에 출력 값처럼 계산되어 정답 처리 되지만 현재 테스트하고 있는 pc에서는 위와 같이 잘못 출력이 된다.
- 이 문제의 원인은 input을 콘솔창으로 출력했을 경우 아래와 같이 나온다.
[ '3\r', 'ACDKJFOWIEGHE\r', 'O\r', 'AB' ]
- 여기서 보이는 \r(개행문자) 때문에 input[i].length가 테스트 pc에서 길이가 하나씩 늘어나서 나오기 때문에 제대로 출력이 안 되는 문제가 발생하였다.
해결 방법
- 해결 방법은 input[i].trim()을 사용하면 공백을 제거하기 때문에 위 길이가 늘어나는 것을 방지할 수 있다.
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");
const t = input[0];
for (i = 1; i <= t; i++) {
// \r 개행문자 때문에 length가 하나 늘어나는 것 방지(문제 제출시에는 상관 없음)
let str = input[i].trim();
let End = str.length - 1;
// console.log(input[i].substring(0,1) + input[i].substring(End, input[i].length))
console.log(input[i].charAt(0) + input[i].charAt(End));
}
'Algorithm_javascript' 카테고리의 다른 글
백준 2563번 색종이(javascript/node.js) (0) | 2023.05.09 |
---|---|
자바스크립트 알고리즘 공부하기 (0) | 2023.05.09 |