그림 확대 - LV. 0
문제
- 문자열 배열 picture와 정수 k가 매개벼수로 주어집니다.
- 직사각형 형태의 그림 파일이 있고,
- 이 그림 파일은 1X1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다.
- 이 그림 파일을 매개변수를 이용해 나타내고,
- 이 그림 파일을 가로 세로로 k 배 늘린 그림 파일을 나타낸 문자열 배열을 출력하는 문제입니다.
- 입출력 예
-
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"
]
-
테스트 (인텔리제이)
- 가로로 k만큼 추가한 배열을 위해 temp 배열을 picture의 선언해줍니다.
- 가로로 k만큼 추가하기 위해 for문으로 picture의 크기만큼 순회하여 picture의 원소를 꺼낼 수 있도록 합니다.
- 다음 for문으로 picture의 원소 문자열의 문자 하나하나 k만큼 추가해야 하기 떄문에 picture의 원소 크기만큼 순회하도록 합니다.
- 다음 for문으로 문자를 k만큼 추가할 수 있게 k만큼 순회할 수 있도록 해줍니다.
- 배열을 초기화 해주면 null 값이 들어가 있기 때문에 첫 번째 for문에 각 인덱스를 빈 값으로 초기화 해주고
- 세 번째 for문에서 temp의 각 인덱스 값에 picture의 원소를 문자로 나눠 k만큼 추가할 수 있도록 해줬습니다.
- 이제 세로를 k만큼 추가할 수 있도록 해줄 생각입니다.
- 마지막에 출력될 문자열 배열 answer를 pictrue의 크기 곱하기 k한 만큼의 크기로 선언해줍니다.
- 첫 번째 for문은 answer의 크기만큼 순회하도록 하고
- 두 번째 for문은 k만큼 순회하도록 해줍니다.
- 두 번째 for문에는 answer의 인덱스 번호는 첫 번째 for문의 루프 위치 값을 넣어주고 해당 원소는 temp의 원소를 k만큼 추가할 수 있도록 첫 번째 for문의 루프 위치 값에 k를 나눈 몫 값을 temp의 인덱스 번호로 설정하여 문제를 해결했습니다.
package com.namji.codingtest;
import java.util.Arrays;
public class 그림_확대 {
public static void main(String[] args) {
/*
문자열 배열 picture와 정수 k가 매개벼수로 주어집니다.
직사각형 형태의 그림 파일이 있고,
이 그림 파일은 1X1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다.
이 그림 파일을 매개변수를 이용해 나타내고,
이 그림 파일을 가로 세로로 k 배 늘린 그림 파일을 나타낸 문자열 배열을 출력하는 문제입니다.
입출력 예
picture
[
".xx...xx.",
"x..x.x..x",
"x...x...x",
".x.....x.",
"..x...x..",
"...x.x...",
"....x...."]
[
"x.x",
".x.",
"x.x"]
k
2
3
result
[
"..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........"]
[
"xxx...xxx",
"xxx...xxx",
"xxx...xxx",
"...xxx...",
"...xxx...",
"...xxx...",
"xxx...xxx",
"xxx...xxx",
"xxx...xxx"]
*/
String[] picture = {
"x.x",
".x.",
"x.x"
};
int k = 3;
String[] temp = new String[picture.length];
for (int i = 0; i < picture.length; i++) {
temp[i] = "";
for (int j = 0; j < picture[i].length(); j++) {
for (int l = 0; l < k; l++) {
temp[i] += picture[i].charAt(j);
}
}
}
String[] answer = new String[picture.length * k];
for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < k; j++) {
answer[i] = temp[i / k];
}
}
System.out.println(Arrays.toString(answer));
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public String[] solution(String[] picture, int k) {
String[] temp = new String[picture.length];
for (int i = 0; i < picture.length; i++) {
temp[i] = "";
for (int j = 0; j < picture[i].length(); j++) {
for (int l = 0; l < k; l++) {
temp[i] += picture[i].charAt(j);
}
}
}
String[] answer = new String[picture.length * k];
for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < k; j++) {
answer[i] = temp[i / k];
}
}
return answer;
}
}
'Coding Test > Java Coding Test' 카테고리의 다른 글
[프로그래머스 / 자바] - 조건에 맞게 수열 변환하기 2 (0) | 2024.08.25 |
---|---|
[프로그래머스 / 자바] - 영어가 싫어요 (0) | 2024.08.24 |
[프로그래머스 / 자바] - 같은 숫자는 싫어 (0) | 2024.08.21 |
[프로그래머스 / 자바] - 문자열 겹쳐쓰기 (0) | 2024.08.20 |
[프로그래머스 / 자바] - 외계어 사전 (0) | 2024.08.12 |