문제
입력 받기
입력을 받는 대한 방법은,
"백준 자바스크립트 입력" 키워드로 검색하거나,
에 간단하게 정리해놨다.
문제 풀이
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let len = parseInt(input[0]);
for (let i = 1; i <= len; i++) {
let words = input[i].split(" ");
let answer = "";
for (let word of words) {
if (word.length === 1) {
answer += `${word} `;
}
answer += `${word.split("").reverse().join("")} `;
}
console.log(answer);
}
입력을 받는 첫 두 줄을 제외하면 짧게 끝났다.
문제 해결을 위해 배열의 reverse 함수를 쓰면 좋겠다고 생각했다.
그래서, words 변수를 문장을 구성하는 각 단어를 기준으로 나눠 값을 가지게 했고,
for문을 통해 각 단어를 split + reverse + join 의 결합으로 뒤집고, 각 단어를 합쳐서 다시 문장으로 만들어 출력했다.
이대로 짧게 끝내기는 아쉬우니, 가능한 코드를 더 줄여보자.
다른 코드
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let len = parseInt(input[0]);
for (let i = 1; i <= len; i++) {
let words = input[i].split(" ");
let answer = words.map((word) => word.split("").reverse().join("")).join(" ");
console.log(answer);
}
for 문을 map 함수로 대체하였다.
map 함수는 각각의 요소들에 함수를 적용한 함수 리턴값들을 새로운 요소로 가진 배열을 리턴한다.
이렇게 문장의 각각의 단어들을 뒤집은 배열을 얻어서, join 함수로 다시 문장(문자열)으로 만들어 출력했다.
'DS & Algorithm > baekjoon' 카테고리의 다른 글
[백준] 13023번 ABCDE - JavaScript(NodeJS) (0) | 2021.05.27 |
---|---|
[백준] 1932번 정수삼각형 - JavaScript(NodeJS) (0) | 2021.05.17 |
[백준] 1309번 동물원 - JavasScript(NodeJS) (0) | 2021.05.16 |
[백준] 1406번 에디터 - JavaScript(NodeJS) (2) | 2021.05.02 |
[백준] 10828번 스택 - JavaScript(NodeJS) (0) | 2021.05.01 |