프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 그림 확대(Java)

Sigfriede 2023. 6. 16. 01:00

  문제 설명

  직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 x 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....."]
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........"]
["x.x",
".x.",
"x.x"]
3 ["xxx...xxx",
"xxx...xxx",
"xxx...xxx",
"...xxx...",
"...xxx...",
"...xxx...",
"xxx...xxx",
"xxx...xxx",
"xxx...xxx"]
import java.lang.StringBuilder;
class Solution {
    public String[] solution(String[] picture, int k) {
        String[] answer = new String[picture.length * k];
        int index = 0;
        for (int i = 0; i < picture.length; i++) {
            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < picture[i].length(); j++) {
                for (int n = 0; n < k; n++) {
                    sb.append(picture[i].charAt(j));
                }
            }   
            for (int j = 0; j < k; j++) {
                answer[index++] = sb.toString();
            }
        }
        return answer;
    }
}

  answer 배열의 크기는 picture에서 k만큼 확대한 값을 할당합니다.

  이후 answer의 인덱스를 담당할 index 변수를 생성합니다.

  첫 번째 for문이 picture의 길이만큼 순회합니다.

  StringBuilder를 생성합니다. picture의 i번째에 있는 문자를 확대할 때 쓸 것입니다.

  두 번째 for문이 picture의 i번째 원소의 길이만큼 순회합니다.

  세 번째 for문이 n이 k보다 작은 동안 순회합니다.

  append 메소드를 이용하여 picture의 i번째 원소에서 j번째 문자를 k번 반복하여 추가합니다.

  네 번째 for문에서 j가 k보다 작은 동안 순회합니다. 앞선 과정에서 문자열만을 확대했다면 이번에는 확대한 문자열 전체를 k번 반복하여 원소로 추가하는 것입니다.

  answer의 index 번째 원소에 sb를 할당합니다. 할당하기 전 toString 메소드를 이용하여 StringBuilder를 문자열로 변경하여 올바른 문자열을 할당할 수 있도록 합니다.