매일 Algorithm

신재원·2023년 5월 20일
0

Algorithm

목록 보기
126/243

프로그래머스 (배열의 길이를 2의 거듭제곱으로 만들기)

import java.util.Arrays;

public class problem423 {
    class Solution {
        public int[] solution(int[] arr) {
            int newLength = 1;

            while (newLength < arr.length) {
                newLength *= 2; // 2의 제곱으로 할당
            }

            // Arrays.copyOf(원본 배열, 복사하고싶은 길이);
            int[] answer = Arrays.copyOf(arr, newLength);

            return answer;
        }
    }
}

프로그래머스 (수열과 구간 쿼리 2)

public class problem424 {
    class Solution {
        public int[] solution(int[] arr, int[][] queries) {
            int[] answer = new int[queries.length];

            for (int i = 0; i < queries.length; i++) {
                int start = queries[i][0]; // start 인덱스
                int end = queries[i][1]; // end 인덱스

                int compare = queries[i][2];

                int min = -1; // 값이 없을 경우 -1 할당
                for (int j = start; j <= end; j++) {
                    if (arr[j] > compare) {
                        // 최소값이 arr배열에 있는 값보다 클경우 다시할당
                        if (min == -1 || arr[j] < min) {
                            min = arr[j];
                        }
                    }
                }
                answer[i] = min;
            }
            return answer;
        }
    }
}

프로그래머스 (두수의 합)

import java.math.BigInteger;
public class problem425 {
    
    class Solution {
        public String solution(String a, String b) {
            // 2번째 예시가 int 타입, long 타입의 범위를 다 벗어난다.
            // 두 문자열을 BigInteger로 변환
            BigInteger numA = new BigInteger(a);
            BigInteger numB = new BigInteger(b);

            BigInteger sum = numA.add(numB);

            // 결과를 문자열로 변환하여 반환
            return sum.toString();
        }
    }
}

프로그래머스 (왼쪽 오른쪽)

public class problem426 {
    class Solution {
        public String[] solution(String[] str_list) {
            int start = 0; // 시작 인덱스
            int end = 0; // 끝 인덱스

            for (int i = 0; i < str_list.length; i++) {
                String str = str_list[i];

                // 문자열에서 "l"을 만날경우
                if (str.equals("l")) {
                    start = 0;
                    end = i;
                    break;
                }
                // 문자열에서 "r"을 만날경우
                if (str.equals("r")) {
                    start = i + 1;
                    end = str_list.length;
                    break;
                }
            }

            // 배열 크기 할당
            String[] answer = new String[end - start];

            for (int i = start; i < end; i++) {
                // 인덱스를 맞추기 위해 answer[i-start]
                answer[i - start] = str_list[i];
            }
            return answer;
        }
    }
}

0개의 댓글