극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, 입문] 배열 뒤집기

sundori 2024. 6. 14. 20:42

목차

    문제 설명

    정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요

    사용한 기술 설명

    1. import java.util.Collections;

    • java.util.Collections 클래스는 Java Collections Framework의 유틸리티 클래스입니다. 이 클래스는 컬렉션을 조작하는 정적 메서드를 제공합니다.
    • reverse(List<?> list) 메서드는 주어진 리스트의 요소들을 역순으로 만듭니다.

    2. import java.util.List;

    • java.util.List 인터페이스는 컬렉션 프레임워크의 일부로, 순서가 있는 요소의 목록을 나타냅니다. 중복 요소를 허용하며, 요소에 접근할 때 인덱스를 사용합니다.
    • 예: List<Integer>는 Integer 객체의 리스트를 나타냅니다.

    3. import java.util.Arrays;

    • java.util.Arrays 클래스는 배열을 조작하기 위한 다양한 유틸리티 메서드를 포함합니다.
    • stream(int[] array) 메서드는 주어진 배열을 원소로 하는 스트림을 반환합니다.

    4. import java.util.stream.Collectors;

    • java.util.stream.Collectors 클래스는 스트림을 수집하기 위한 다양한 유틸리티 메서드를 제공합니다.
    • toList() 메서드는 스트림의 요소들을 리스트로 수집합니다.

    5. Arrays.stream(num_list)

    • 설명: num_list 배열을 스트림으로 변환합니다. stream(int[] array)는 IntStream을 반환합니다.

    6. boxed()

    • 설명: 기본형 스트림 (예: IntStream)을 객체형 스트림 (예: Stream<Integer>)으로 변환합니다. 여기서는 IntStream을 Stream<Integer>로 변환합니다.

    7. collect(Collectors.toList())

    • 설명: 스트림의 요소들을 수집하여 리스트로 변환합니다. Collectors.toList()는 Stream의 요소를 리스트로 수집하는 데 사용됩니다.

    8. Collections.reverse(list)

    • 설명: 주어진 리스트 list의 요소들을 역순으로 배치합니다. 이 메서드는 리스트 자체를 변경합니다.

    9. list.stream()

    • 설명: 리스트를 스트림으로 변환합니다. List의 메서드로, 리스트의 요소들을 스트림으로 반환합니다.

    10. mapToInt(Integer::intValue)

    • 설명: 스트림의 각 요소를 int로 변환합니다. Integer::intValue는 Integer 객체의 값을 기본형 int로 변환하는 메서드 참조입니다.

    11. toArray()

    • 설명: 스트림의 요소들을 배열로 변환합니다. IntStream에서 호출되며, int[] 배열을 반환합니다.

    전체 흐름 설명

    1. 배열을 스트림으로 변환: Arrays.stream(num_list)는 num_list 배열을 스트림으로 변환합니다.
    2. 스트림을 객체형으로 변환: boxed()를 사용하여 IntStream을 Stream<Integer>로 변환합니다.
    3. 스트림을 리스트로 변환: collect(Collectors.toList())를 사용하여 스트림을 리스트로 수집합니다.
    4. 리스트를 역순으로 정렬: Collections.reverse(list)를 사용하여 리스트를 역순으로 정렬합니다.
    5. 리스트를 스트림으로 변환: list.stream()를 사용하여 리스트를 스트림으로 변환합니다.
    6. 스트림의 요소들을 기본형으로 변환: mapToInt(Integer::intValue)를 사용하여 Stream<Integer>의 요소들을 IntStream으로 변환합니다.
    7. 스트림을 배열로 변환: toArray()를 사용하여 IntStream을 int[] 배열로 변환합니다.

    이렇게 해서 주어진 배열을 리스트로 변환하고, 역순으로 정렬한 다음, 다시 배열로 변환하는 작업을 수행합니다.

    import java.util.Collections;
    import java.util.List;
    import java.util.Arrays;
    import java.util.stream.Collectors;
    
    class Solution {
        public int[] solution(int[] num_list) {
            // int[]를 List<Integer>로 변환
            List<Integer> list = Arrays.stream(num_list)
                                       .boxed()
                                       .collect(Collectors.toList());
            
            // List를 역순으로 정렬
            Collections.reverse(list);
    
            // List<Integer>를 다시 int[]로 변환
            return list.stream()
                       .mapToInt(Integer::intValue)
                       .toArray();
        }
    }