매일 Algorithm

신재원·2023년 5월 22일
0

Algorithm

목록 보기
127/243

프로그래머스 (정사각형으로 만들기)

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;
        }
    }
}

0개의 댓글