type error 가 여러번 떠서 뭐가 문제지 꽤나 시간이 걸린 문제였다...
문제 자체는 문자열에 정규표현식을 써서 숫자로 이루어진 문자열을 추출하고,
그걸 다시 replace 함수를 통해 정규표현식으로 0을 빼도록 해주면 되는 문제이다
큰 수인 만큼 BigInt 를 써도 되지만 정규 표현식을 연습할겸 정규 표현식만으로 풀려고 해보았다
type error 의 원인은 문자열에 숫자가 포함되지 않아 정규표현식의 결과가 NULL 인 경우였다
NULL을 다시 replace 정규식에 넣으니 타입에러가 뜬 것이다
정규표현식 을 중복해서 사용하여 필터링 할 때, 이전 결과가 NULL 값인 경우도 꼭 고려하자!
https://www.acmicpc.net/problem/2870
let input = [];
const readline = require("readline").createInterface({
input: process.stdin,
output: process.stdout,
});
readline.on("line", (line) => {
input.push(line);
});
readline.on("close", () => {
solution(input);
process.exit();
});
const solution = (inp) => {
inp.shift();
let regex = /\d+/g;
let arr = [];
for (el of inp) {
let chk = el.match(regex);
if (chk === null) {
continue;
}
for (eli of chk) {
let temp = "";
temp = eli.replace(/^0+/, "");
if (temp === "") {
temp = "0";
}
arr.push(temp);
}
}
arr.sort((a, b) => {
if (a.length < b.length) {
return -1;
}
if (a.length > b.length) {
return 1;
}
for (let i = 0; i < a.length; i++) {
if (a[i] < b[i]) {
return -1;
}
if (a[i] > b[i]) {
return 1;
}
}
return 0;
});
console.log(arr.join("\n"));
};
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 14405/javascript] 피카츄 (0) | 2022.09.20 |
---|---|
[백준 9342/javascript] 염색체 (0) | 2022.09.19 |
[백준 2857/javascript] FBI (0) | 2022.09.17 |
[백준 11507/javascript] 카드셋트 (0) | 2022.09.15 |
[백준 17203/javascript] ∑|ΔEasyMAX| (0) | 2022.09.14 |
댓글