728x90
[문제]
[코드 & 풀이]
// common은 기본 변수형, input은 변수 선언들
let [common, ...input] = require("fs")
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "input.txt")
.toString()
.trim()
.split(" ");
input = input.map((v) => v.replace(",", "")); // 쉼표를 없애줌
input[input.length - 1] = input[input.length - 1].replace(";", ""); // 마지막에 오는 세미콜론을 없애줌
const format = /[a-zA-Z]/;
const alphabet = [];
for (let i = 0; i < input.length; i++) {
const tmp = [];
input[i].split("").map((char) => {
// 한 글자씩 순회하면서 알파벳일 경우(format 정규식에 match가 되는 경우) tmp에 push하고,
// replace를 이용하여 input에서 없애준다.
// 예시) acs[][]&*&*일 경우 -> tmp: ['a','c','s'], input[i] = [][]&*&*
if (char.match(format)) {
tmp.push(char);
input[i] = input[i].replace(char, "");
}
});
// push된 알파벳을 join을 이용하여 단어로 만들어서 alphabet 배열에 Push
// 예시) ['a','c','s'] => 'acs' => alphabet : ['acs']
alphabet.push(tmp.join(""));
// 순서를 뒤집어서 왼편에 붙여야하므로 reverse를 함
// 주의) []를 reverse하면 ][가 되므로, ][는 다시 []로 바꾸어준다.
input[i] = input[i].split("").reverse().join("").replace(/\]\[/g, "[]");
}
// 기본 변수형인 common, [],&,*가 있는 input[i] 그리고 변수명이 들어있는 alphabet[i]를 합쳐서
// result에 push한 후, \n로 join하여 출력한다.
const result = [];
for (let i = 0; i < input.length; i++) {
result.push(`${common}${input[i]} ${alphabet[i]};`);
}
console.log(result.join("\n"));
반례를 생각하지 않고 제출했다가 틀렸습니다를 여러 번 마주한 문제..
입력받은 문자열을 생각하지 않고 reverse 했다가 []가 ][로 출력되었다.
그래서 다시 replace를 이용하여 []로 바꾸어주었다.
320x100
'알고리즘 > 백준' 카테고리의 다른 글
[노드JS/알고리즘] 백준 - 17609번 회문 (0) | 2022.06.04 |
---|---|
[노드JS/알고리즘] 백준 - 1213번 팰린드롬 만들기 (0) | 2022.06.01 |
[노드JS/알고리즘] 백준 - 16953번 A -> B (DFS 풀이) (0) | 2022.03.13 |
[노드JS/알고리즘] 백준 - 1747번 소수&팰린드롬 (0) | 2022.03.09 |
[노드JS/알고리즘] 백준 - 1074번 Z (0) | 2022.02.18 |