프로그래머스 0단계 - 그림확대 본문
반응형
0 단계 : 그림확대
코딩테스트 연습 > 코딩 기초 트레이닝 > 그림확대
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture
과 정수 k
가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k
배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
picture
의 길이 ≤ 20 - 1 ≤
picture
의 원소의 길이 ≤ 20 - 모든
picture
의 원소의 길이는 같습니다. picture
의 원소는 '.'과 'x'로 이루어져 있습니다.- 1 ≤
k
≤ 10
입출력 예
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
는 다음과 같습니다.이를 가로 세로로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........"]를 return 합니다. -
..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........
-
.xx...xx. x..x.x..x x...x...x .x.....x. ..x...x.. ...x.x... ....x....
입출력 예 #2
- 예제 2번의
picture
는 다음과 같습니다.이를 가로 세로로k
배, 즉 3배 확대하면 그림 파일은 다음과 같습니다.따라서 ["xxx...xxx", "xxx...xxx", "xxx...xxx", "...xxx...", "...xxx...", "...xxx...", "xxx...xxx", "xxx...xxx", "xxx...xxx"]를 return 합니다. -
xxx...xxx xxx...xxx xxx...xxx ...xxx... ...xxx... ...xxx... xxx...xxx xxx...xxx xxx...xxx
-
x.x .x. x.x
코드
function solution(picture, k) {
// 가로 세로 전부 k배만큼 늘어나야 하는 것 같습니다.
// .xx...xx의 경우 => .. xx xx .. .. .. xx xx (k=2 일경우)
return picture.reduce((prev, curr) => {
// ".xx...xx."일경우 배열로 만들어서 k번 반복해서 한 값을 만들어줍니다. => "..xxxx......xxxx..
let row = curr.split('').reduce((innerPrev, innerCurr) => {
innerPrev += innerCurr.repeat(k);
return innerPrev;
}, "");
// 세로로도 늘어나야 하기때문에 k배 해줘야 합니다.
for(let i = 0; i < k; i++) {
prev.push(row);
}
return prev;
}, []);
}
리뷰
1. picture.reduce를 통해 row 하나하나 마다 다시 reduce를 돌아서 innerCurr.repeat(k)를 통해서 k번 더 추가해줍니다.
2. row를 k배 만큼 확대 했으면 그 row를 k번 밑으로도 추가해줘야 합니다.
3. 최종적으로 만들어진 결과 return.
총평 : 가로세로 k만큼 더 추가해주면 되겠죠?
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181836
반응형
'알고리즘 > 0단계' 카테고리의 다른 글
프로그래머스 0단계 - 문자열 묶기 (1) | 2023.06.04 |
---|---|
프로그래머스 0단계 - 날짜 비교하기 (0) | 2023.06.04 |
프로그래머스 0단계 - 겹치는 선분의 길이 (0) | 2023.06.04 |
프로그래머스 0단계 - A 강조하기 (0) | 2023.06.04 |
프로그래머스 0단계 - 정수를 나선형으로 배치하기 (1) | 2023.06.04 |
Comments