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

[프로그래머스, LV.0] 마지막 두 원소

sundori 2023. 5. 17. 19:30

목차

     

    #1 마지막 두 원소

    문제 설명:

    정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

    제한 사항:

    • 2 ≤ num_list의 길이 ≤ 10
    • 1 ≤ num_list의 원소 ≤ 9

    입출력 예:

    #2 코드 및 알고리즘

    import java.util.*;
    import java.util.stream.Collectors;
    class Solution {
        public int[] solution(int[] num_list) {
            List<Integer> list = Arrays.stream(num_list) // IntStream
                                       .boxed() //Stream<Integer>
                                       .collect(Collectors.toList());
            if(num_list[num_list.length-1] > num_list[num_list.length - 2]){
                list.add(num_list[num_list.length-1] - num_list[num_list.length - 2]);
            } else{
                list.add(num_list[num_list.length-1] * 2);
            }
            int[] newArr = list.stream().mapToInt(i -> i).toArray();
            return newArr;
        }
    }
    ------------------------------------------------
    정확성  테스트
    테스트 1 〉	통과 (5.43ms, 78.6MB)
    테스트 2 〉	통과 (18.50ms, 68.7MB)
    테스트 3 〉	통과 (3.81ms, 78.2MB)
    테스트 4 〉	통과 (25.61ms, 82.8MB)
    테스트 5 〉	통과 (4.83ms, 65.8MB)
    테스트 6 〉	통과 (3.90ms, 69.2MB)
    테스트 7 〉	통과 (10.59ms, 74.2MB)
    테스트 8 〉	통과 (4.85ms, 75.8MB)
    테스트 9 〉	통과 (6.99ms, 94.1MB)
    테스트 10 〉	통과 (4.44ms, 78MB)
    테스트 11 〉	통과 (3.98ms, 77.9MB)
    테스트 12 〉	통과 (7.49ms, 76.9MB)
    테스트 13 〉	통과 (4.37ms, 74.8MB)
    테스트 14 〉	통과 (4.36ms, 73.2MB)
    테스트 15 〉	통과 (20.26ms, 87.4MB)
    테스트 16 〉	통과 (4.61ms, 92MB)
    테스트 17 〉	통과 (15.85ms, 73.7MB)
    테스트 18 〉	통과 (4.35ms, 79.2MB)
    테스트 19 〉	통과 (3.13ms, 73.2MB)
    테스트 20 〉	통과 (3.63ms, 72.4MB)
    채점 결과
    정확성: 100.0
    합계: 100.0 / 100.0

    풀이:

    • 리스트 목록에 주어진 num_list를 삽입한다.
      여기서 사용된 알고리즘은  정수 배열을 정수 목록에 넣는 방법을 사용하였다.
    • if-else문 사용
      num_list[num_list.length-1] > num_list[num_list.length - 2] 조건을 사용하는데
      만약 마지막 원소의 값이 마지막 원소의 값 이전의 값보다 크다면
      num_list[num_list.length-1] + num_list[num_list.length - 2]
      작다면 num_list[num_list.length-1] * 2을 list의 뒤에 삽입한다.
    • 새로운 정수 배열에 list 목록에 있던 값들을 옮긴다.

    #3 정수 배열을 정수 목록으로 변환.

    List<Integer> list = Arrays.stream(arr)        // IntStream
                                        .boxed()          // Stream<Integer>
                                        .collect(Collectors.toList());
    -----------------------------------------------------------------------
    List<Integer> list = IntStream.of(arr)    // IntStream 반환
                                .boxed()
                                .collect(Collectors.toList());