직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
처음에는 문제가 이해가 잘 가지 않았다. 예제를 찬찬히 뜯어 보니 String[] picture의 요소들 하나하나도 k배(가로), 전체 개수도 k배(세로) 하면 되는 문제라는 것을 알게 되어 다음과 같이 풀이했다.
k라는 미지의 수에 대응하기 위해서는 가변적으로 요소를 추가할 수 있는 List 객체를 활용해야 한다고 생각했다. for문을 돌며 split()으로 요소인 문자열을 나누어 문자열 배열 String[] width에 담은 뒤, 이중 for문으로 repeat(k)로 k배 늘어난 문자열을 만들어준다.
그다음 해당 문자열을 또 k만큼 반복해 List 객체에 담아준다. 이렇게 가로, 세로 k배 늘어난 문자열 배열 picture의 요소들을 반환 타입에 맞게 toArray()을 이용해 문자열 배열로 변환하여 반환한다.
import java.util.ArrayList;
import java.util.List;
class Solution {
public String[] solution(String[] picture, int k) {
List<String> answer = new ArrayList<>();
for(int i=0;i<picture.length;i++){
String[] width = picture[i].split("");
String str = "";
for(int j=0;j<width.length;j++){
str += width[j].repeat(k);
}
for(int s=0;s<k;s++){
answer.add(str);
}
}
return answer.toArray(new String[answer.size()]);
}
}
