문제 설명
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
1 ≤ picture의 길이 ≤ 20
1 ≤ picture의 원소의 길이 ≤ 20
모든 picture의 원소의 길이는 같습니다.
picture의 원소는 '.'과 'x'로 이루어져 있습니다.
1 ≤ k ≤ 10
문제 해결 전략
1. 가로 확장: 주어진 문자열을 한 문자씩 확인 후, 해당 문자를 k번 반복하여 가로로 확장
2. 세로 확장: 가로 확장된 문자열을 k번 반복하여 세로로 확장
3. 반복 처리: 이 과정을 모든 행에 대해 반복
제출 코드
class Solution {
public String[] solution(String[] picture, int k) {
String[] answer = new String[picture.length * k];
int idx = 0;
for (int i=0; i<picture.length; i++){
StringBuilder sb = new StringBuilder();
for (char c : picture[i].toCharArray()){
for (int j=0; j<k; j++){
sb.append(c);
}
}
String expendRow = sb.toString();
for (int j=0; j<k; j++){
answer[idx++] = expendRow;
}
}
return answer;
}
}
세로 확장은 반복문으로 element를 여러번 출력하면 됐지만 가로 확장은 String 배열이었기 때문에 char로 쪼개준 후 k번 반복하여 늘려야한다.
class Solution {
public String[] solution(String[] picture, int k) {
String[] answer = new String[picture.length * k];
int idx = 0;
for (int i = 0; i < picture.length; i++) {
String expandedRow = "";
for (char c : picture[i].toCharArray()) {
expandedRow += String.valueOf(c).repeat(k);
}
for (int j = 0; j < k; j++) {
answer[idx++] = expandedRow;
}
}
return answer;
}
}
=> repeat함수는 String 클래스의 메서드기 때문에
String.valueOf(c).repeat(k) 이런식으로 일단 char를 String으로 변환한 후 사용할 수 있다.