

직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
picture k result [".xx...xx.", "x..x.x..x", "x...x...x", ".x.....x.", "..x...x..", "...x.x...", "....x...."] 2 ["..xxxx......xxxx..", "..xxxx......xxxx..", "xx....xx..xx....xx", "xx....xx..xx....xx", "xx......xx......xx", "xx......xx......xx", "..xx..........xx..", "..xx..........xx..", "....xx......xx....", "....xx......xx....", "......xx..xx......", "......xx..xx......", "........xx........", "........xx........"] ["x.x", ".x.", "x.x"] 3 ["xxx...xxx", "xxx...xxx", "xxx...xxx", "...xxx...", "...xxx...", "...xxx...", "xxx...xxx", "xxx...xxx", "xxx...xxx"] 입출력 예 #1
예제 1번의 picture는 다음과 같습니다.
.xx...xx.
x..x.x..x
x...x...x
.x.....x.
..x...x..
...x.x...
....x....
이를 가로 세로로 k배, 즉 2배 확대하면 그림 파일은 다음과 같습니다.
..xxxx......xxxx..
..xxxx......xxxx..
xx....xx..xx....xx
xx....xx..xx....xx
xx......xx......xx
xx......xx......xx
..xx..........xx..
..xx..........xx..
....xx......xx....
....xx......xx....
......xx..xx......
......xx..xx......
........xx........
........xx........
- picture의 행 수와 열 수를 구함.
- k를 사용하여 새로운 행 수와 열 수를 계산.
- 새로운 2차원 배열 result를 생성. result는 크기가 new행 × new열이고 모든 요소가 공백으로 채워진 배열.
- picture를 순회하면서 각 픽셀 값을 가져옴.
- 픽셀 값을 k배 늘린 범위에서 result에 할당.
- result를 반환합니다.
function solution(picture, k) {
const newRowLength = picture.length * k;
const newColLength = picture[0].length * k;
const result = Array.from({ length: newRowLength }, () => "".repeat(newColLength));
picture.forEach((row, rowIndex) => {
row.split("").forEach((pixel, colIndex) => {
const startRow = rowIndex * k;
const startCol = colIndex * k;
for (let i = startRow; i < startRow + k; i++) {
result[i] = result[i].substring(0, startCol) + pixel.repeat(k) + result[i].substring(startCol + k);
}
});
});
return result;
}