프로그래머스

프로그래머스 배열 뒤집기 문제풀이

애용이랑떼껄룩 2024. 2. 1. 13:47
728x90

문제 설명

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

제한 사항

● 0 ≤ num_list의 원소 ≤ 1,000

● 1 ≤ num_list의 길이 ≤ 1,000

입출력 예

num_list result
[1, 2, 3, 4, 5] [5, 4, 3, 2, 1]
[1, 1, 1, 1, 1, 2] [2, 1, 1, 1, 1, 1]
[1, 0, 1, 1, 1, 3, 5] [5, 3, 1, 1, 1, 0, 1]

 

문제 풀이

public List<Integer> solution1(int[] array) {
    List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());

    Collections.reverse(list);

    return list;
}

stream을 사용하여 array 배열을 List로 변환해주고,

reverse를 사용해 list의 순서를 역순으로 나열해줬다

나는 메소드의 타입을 List로 바꿔서 리턴하여 사용해 문제에 통과하였으나 원래는 int[]로 메소드가 주어져서

잘못된 풀이라고 생각된다.

다른 풀이

public int[] solution2(int[] array) {
    List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());

    Collections.reverse(list);

    return list.stream().mapToInt(Integer::intValue).toArray();
}

나의 풀이와 똑같이 stream을 사용해 list를 역순으로 나열하였으나,

해당풀이는 배열로 변환하여 return 해준다.

return 부분은 stream의 mapToInt를 사용하는데 map을 이용하여 intStream을 가져오고 그 후에 toArray()를 통하여 배열로 변경한다.

mapToInt()에 :: 을 사용하였는데, 람다식으로도 가능하다 ( mapToInt(i- > i) )

 

 

태클은 환영!

 

반응형