문제 설명
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 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는 다음과 같습니다.
.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........
- 따라서 ["..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 합니다.
입출력 예 #2
- 예제 2번의 picture는 다음과 같습니다.
x.x
.x.
x.x
- 이를 가로 세로로 k배, 즉 3배 확대하면 그림 파일은 다음과 같습니다.
xxx...xxx
xxx...xxx
xxx...xxx
...xxx...
...xxx...
...xxx...
xxx...xxx
xxx...xxx
xxx...xxx
- 따라서 ["xxx...xxx", "xxx...xxx", "xxx...xxx", "...xxx...", "...xxx...", "...xxx...", "xxx...xxx", "xxx...xxx", "xxx...xxx"]를 return 합니다.
function solution(picture, k) {
const result = []
for (let str of picture) {
let newStr = ''
for (let el of str) {
newStr += el.repeat(k)
}
result.push(...new Array(k).fill(newStr))
}
return result
}
증가시켜야 하는 것이 무엇인지가 핵심인 문제! 나는 이중 for문으로 풀었는데 다른 분들 중에는 좀 더 간단하게 푸신 분도 있어서.. 좀더 고민해볼걸 그랬나 싶기도 했다.
배열 picture의 요소들을 돌면서 repeat 메서드로 각 문자를 k만큼 증가시켜 변수에 넣어준다. 그 다음 k만큼 변수를 증가시켜서 결과 배열인 result에 추가해준다.
https://school.programmers.co.kr/learn/courses/30/lessons/181836
'study > Algorithm' 카테고리의 다른 글
[프로그래머스] 배열 조각하기 (0) | 2024.07.09 |
---|---|
[프로그래머스] 전국 대회 선발 고사 (0) | 2024.07.04 |
[프로그래머스] 옹알이 (1) (1) | 2024.07.02 |
[프로그래머스] 정사각형으로 만들기 (0) | 2024.06.18 |
[프로그래머스] 무작위로 K개의 수 뽑기 (0) | 2024.05.28 |