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