문제 링크
풀이
const words = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
const maxLength = Math.max(...words.map(i => i.length));
let vertical = "";
for (let i=0; i<maxLength; i++) {
for (let j=0; j<words.length; j++) {
vertical += words[j][i] || "";
}
}
console.log(vertical);
단어들의 최대 길이를 구한 후, 각 단어들을 번갈아가며 순회하면서 한 글자씩 이어 붙인다. 이 때 maxLength보다 길이가 작은 경우 words[j][i]는 undefined를 반환하는데, 단축 평가 표현식을 통해 undefined의 경우 false가 되어 논리합 연산자의 뒤에 있는 빈 문자열 ""을 더하게 된다.
Math.max(...words.map(i => i.length));
// Math.max.apply(null, words.map(i => i.length));와 같음
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 2164] 카드2 with Python (0) | 2021.04.07 |
---|---|
[백준 10988] 팰린드롬인지 확인하기 with Node.js (0) | 2021.04.06 |
[백준 11653] 소인수분해 with Python (0) | 2021.04.06 |
[백준 1977] 완전제곱수 with Node.js (0) | 2021.04.05 |
[백준 2167] 2차원 배열의 합 with Python (0) | 2021.04.05 |