극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] 배열 만들기 1

sundori 2023. 9. 4. 13:25

목차

    #1 배열 만들기 1

    문제 설명

    정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

    제한사항

    • 1 ≤ n ≤ 1,000,000
    • 1 ≤ k ≤ min(1,000, n)

    입출력 예

    n k result
    10 3 [3, 6, 9]
    15 5 [5, 10, 15]

    #2 알고리즘 및 코드

    # 방법 1

    그저 반복문 사용...

    class Solution {
        public int[] solution(int n, int k) {
            int[] answer = new int[n / k];
            for(int i = 0; i < n / k; i++){
                for(int j = 0; j <= i; j++){
                    answer[i] += k;
                }
            }
            return answer;
        }
    }
    ---------------------------------------
    정확성  테스트
    테스트 1 〉	통과 (0.02ms, 71.5MB)
    테스트 2 〉	통과 (0.03ms, 76.8MB)
    테스트 3 〉	통과 (0.01ms, 65.4MB)
    테스트 4 〉	통과 (0.02ms, 74MB)
    테스트 5 〉	통과 (0.02ms, 72.3MB)
    테스트 6 〉	통과 (0.01ms, 77.7MB)
    테스트 7 〉	통과 (0.02ms, 71.5MB)
    테스트 8 〉	통과 (0.01ms, 78.6MB)
    테스트 9 〉	통과 (0.03ms, 74.1MB)
    테스트 10 〉	통과 (12.53ms, 78.6MB)
    테스트 11 〉	통과 (0.25ms, 74.5MB)

    # 방법 2

    메소드 참조 방식 사용!

    스트림의 mapToInt를 통해 변환하는 방법을 사용!

    import java.util.ArrayList;
    import java.util.List;
    class Solution {
        public int[] solution(int n, int k) {
            List<Integer> list = new ArrayList<>();
            for(int i = k; i <= n;){
                list.add(i);
                i += k;
            }
            int[] answer = list.stream().mapToInt(Integer::intValue).toArray();
            return answer;
        }
    }
    -----------------------
    정확성  테스트
    테스트 1 〉	통과 (2.15ms, 77.7MB)
    테스트 2 〉	통과 (1.87ms, 79.1MB)
    테스트 3 〉	통과 (2.46ms, 74.1MB)
    테스트 4 〉	통과 (2.01ms, 78.5MB)
    테스트 5 〉	통과 (6.15ms, 80.9MB)
    테스트 6 〉	통과 (2.68ms, 69.4MB)
    테스트 7 〉	통과 (2.01ms, 72.4MB)
    테스트 8 〉	통과 (1.86ms, 66.2MB)
    테스트 9 〉	통과 (1.82ms, 75.9MB)
    테스트 10 〉	통과 (3.14ms, 81.1MB)
    테스트 11 〉	통과 (2.53ms, 77.1MB)

    # 방법 3

    람다식 사용.

    import java.util.ArrayList;
    import java.util.List;
    class Solution {
        public int[] solution(int n, int k) {
            List<Integer> list = new ArrayList<>();
            for(int i = k; i <= n;){
                list.add(i);
                i += k;
            }
            int[] answer = list.stream().mapToInt(i -> i).toArray();
            return answer;
        }
    }
    --------------------
    정확성  테스트
    테스트 1 〉	통과 (2.15ms, 77.3MB)
    테스트 2 〉	통과 (3.31ms, 78.3MB)
    테스트 3 〉	통과 (2.06ms, 66.4MB)
    테스트 4 〉	통과 (3.94ms, 71.4MB)
    테스트 5 〉	통과 (2.15ms, 76.4MB)
    테스트 6 〉	통과 (3.02ms, 79.1MB)
    테스트 7 〉	통과 (1.95ms, 77.2MB)
    테스트 8 〉	통과 (2.29ms, 73.4MB)
    테스트 9 〉	통과 (2.65ms, 76.9MB)
    테스트 10 〉	통과 (4.08ms, 80.4MB)
    테스트 11 〉	통과 (2.09ms, 79.1MB)