728x90
문제
https://www.acmicpc.net/problem/17413
문제 해석
이 문제는 아래 첫 풀이처럼 문제의 모든 조건을 하나씩 구현한 다음 해결해도 되지만, 정규식으로 쉽게 해결할 수도 있다.
(정규식을 배우자..)
풀이
const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";
const input = require("fs").readFileSync(filePath).toString().trim().split("\n");
function solution(input) {
const arr = input[0].split("");
let tempArr = "";
let answer = "";
for (let i = 0; i < arr.length; i++) {
if (arr[i] === "<") {
answer += tempArr.split("").reverse().join("");
tempArr = "";
let t = "<";
let tempIndex = i + 1;
while (1) {
if (arr[tempIndex] !== ">") {
t += arr[tempIndex];
tempIndex++;
} else break;
}
answer += t + ">";
i = tempIndex;
continue;
}
if (arr[i] !== "<" && arr[i] !== ">" && arr[i] !== " ") {
tempArr += arr[i];
} else if (arr[i] === " ") {
answer += tempArr.split("").reverse().join("") + " ";
tempArr = "";
}
}
if (tempArr.length > 0) answer += tempArr.split("").reverse().join("");
return answer;
}
console.log(solution(input));
정규식 풀이
const readline = require("readline");
const solution = (line) => {
let answer = line;
const regExp = /<[a-z\s]+>|[a-z0-9]+/g;
answer = answer.replace(regExp, (word) => {
return word.startsWith("<") ? word : word.split("").reverse().join("");
});
return answer;
};
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
console.log(solution(line));
});
끝
728x90
'WEB > 백준 문제 풀이' 카테고리의 다른 글
백준 31863 내진설계 (node.js) (0) | 2024.06.06 |
---|---|
백준 12904번 A와 B (node.js) (0) | 2024.05.30 |
백준 14502번 연구소 (node.js) (0) | 2024.05.23 |
백준 3190번 뱀 (node.js) (0) | 2024.05.22 |
백준 11536번 줄 세우기 (node.js) (0) | 2024.05.21 |