[programmers] 그림 확대 - Java

자바로 작성된 문제 해결 방법은 1x1 픽셀로 이루어진 그림 파일을 가로 세로로 k배 늘리는 것입니다. StringBuilder의 append 메소드를 사용하여 k배 만큼 문자를 추가하고, 이를 k번 반복하여 ArrayList에 추가합니다. 마지막으로 ArrayList를 문자열 배열로 변환하여 반환합니다. 이 문제를 통해 StringBuilder의 메소드 사용법과 ArrayList를 문자열 배열로 변환하는 방법을 익힐 수 있습니다.
Jan 21, 2024
[programmers] 그림 확대 - Java

문제 설명

직사각형 형태의 그림 파일이 있고, 이 그림 파일은 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 합니다.

solution.java

import java.util.*; class Solution { public String[] solution(String[] picture, int k) { List<String> list = new ArrayList<>(); StringBuilder sb = new StringBuilder(); for(int i=0; i<picture.length; i++){ for(int j=0; j<picture[i].length(); j++){ for(int x=0; x<k; x++){ sb.append(picture[i].charAt(j)); } } for(int j=0; j<k; j++){ list.add(sb.toString()); } sb.delete(0, sb.length()); } return list.toArray(new String[list.size()]); } }
 

핵심 키워드

  • StringBuilder에 값을 입력하고 싶으면 .append(추가할 문자 또는 문자열) 메소드를 사용한다.
  • StringBuilder를 문자열로 변환하고 싶으면 .toString() 메소드를 사용한다.
  • StringBuilder를 초기화하고 싶으면 .delete(시작 인덱스, 끝 인덱스) 메소드를 사용한다.
  • ArrayList를 문자열 배열로 변환하고 싶으면 .toArray() 메소드를 사용한다.
 

결론!

해당 문제를 풀면서 StringBuilder의 메소드의 사용법을 익힐 수 있었고, ArrayList를 문자열 배열로 변경하려면 .toArray() 메소드를 사용하면 된다는 것을 익힐 수 있었다.
 
Share article

👨🏻‍💻DriedPollack's Blog