프로그래머스 (정사각형으로 만들기)
import java.util.Arrays;
public class problem427 {
class Solution {
public int[][] solution(int[][] arr) {
int col = arr[0].length;
int row = arr.length;
// 행 길이가 긴 경우
if (row > col) {
int[][] answer = new int[row][row];
// Arrays.copyOf(arr[i],row)
// arr[i][] 의 배열을 쭉 복사합니다, row의 길이만큼
for (int i = 0; i < row; i++) {
answer[i] = Arrays.copyOf(arr[i], row);
}
return answer;
}
// 열 길이가 긴 경우
if (col > row) {
int[][] answer = new int[col][col];
for (int i = 0; i < col; i++) {
// 열의 길이를 행으로 만들기 위해 작성
if (i < row) {
answer[i] = Arrays.copyOf(arr[i], col);
} else {
answer[i] = new int[col];
}
}
return answer;
}
return arr;
}
}
}
프로그래머스 (배열 만들기 6)
import java.util.Stack;
public class problem428 {
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < arr.length; i++) {
// 비어있는 경우
if (stack.isEmpty()) {
stack.push(arr[i]);
}
// 꺼낸 값이 배열의 값이랑 같을경우
else if (stack.peek() == arr[i]) {
stack.pop();
} else {
stack.push(arr[i]);
}
}
if (stack.size() == 0) {
return new int[]{-1};
}
int[] answer = new int[stack.size()];
// stack은 FILO 이다.
for (int i = answer.length - 1; i >= 0; i--) {
answer[i] = stack.pop();
}
return answer;
}
}
}
프로그래머스 (그림 확대)
public class problem429 {
class Solution {
public String[] solution(String[] picture, int k) {
int row = picture.length;
int col = picture[0].length();
String[] answer = new String[row * k]; // 배열 크기 할당
for (int i = 0; i < row; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < col; j++) {
// 배열의 문자열의 문자 한개
char pixel = picture[i].charAt(j);
// k 만큼 문자 한개씩 더한다.
for (int p = 0; p < k; p++) {
sb.append(pixel);
}
}
// 배열이 k만큼 반복
for (int p = 0; p < k; p++) {
answer[i * k + p] = sb.toString();
}
}
return answer;
}
}
}