직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
function solution(picture, k) {
// 가로로 k배 늘리기
let widthK = picture.map((v) => {
v = v.split('').map((el) => {
return el.repeat(k);
})
return v.join('');
})
// 세로로 k배 늘리기
let lengthK = widthK
.map((v) => {
return Array(k).fill(v);
})
.flat();
return lengthK;
}
이거도 힘들었다... 이렇게 풀고 싶지 않았지만 일단 다른 떠오르는 방법이 없었다.
이번엔 세로로 k배를 늘려준다.
Array(k).fill(v)
를 해서 k만큼의 빈 배열을 만들고 그 안을 v로 채워준다. 그럼 콘솔에 찍었을 때 이런 식의 이차 배열이 나온다.
flat()
Array
인스턴스의flat()
메서드는 모든 하위 배열 요소가 지정된 깊이까지 재귀적으로 연결된 새 배열을 생성합니다.
이 메서드는 배열 내부의 하위 배열을 쉽게 합칠 수 있는 유용한 메서드이다!
function solution(picture, k) {
var answer = [];
picture.forEach((line) => {
const expanded = [...line].reduce((acc, cur) => acc + cur.repeat(k), '');
for(let i=0; i<k; i++) answer.push(expanded);
});
return answer;
}
cur.repeat(k)
)하여 누적한다. function solution(picture, k) {
let result = [];
picture.map((v) => {
const cur = [...v].map((c) => c.repeat(k)).join('');
for(let i = 0; i < k; i++) result.push(cur);
});
return result;
}
c.repeat(k)
를 호출하여 각 문자를 k배 확장한 후 join('')
를 사용하여 확장된 문자들을 하나의 문자열로 병합한다 (가로로 k배 확장된 한 줄)