자바의 경우에는 int[]을 바로 reverse 할 수 있는 방법이 없다.
(새로운 배열을 만들고 거기에 stream으로 넣는 방식을 취해야 한다.)

그래서 순서를 역순으로 하는 방식을 취하는 게 해당 문제에서 가장 효율적인 방법 중 하나다.

import java.util.Arrays;

public class 두배열의원소교체 {
    private static void solution(int N, int[] A, int[] B){
     Arrays.sort(A);
     Arrays.sort(B);
     for(int i = 0; i < N; i++){
        A[i] = B[B.length-1-i];
     }
     System.out.println(Arrays.stream(A).sum());
    }
    public static void main(String[] args) {
     solution(3, new int[] {1,2,5,4,3}, new int[] {5,5,6,6,5});   
    }
}

위에서 언급한 stream 식은 다음과 같다.

//위에 import java.util.Comparator;추가도 :) 하셔야 쓸 수 있습니다.

int[] newSortedArr = Arrays.stream(B)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();

이러한 방식을 취해야 하기 때문에 자바의 경우는 조금 더 복잡한 것...
논리적으로 보면 파이썬이 모든 객체가 Object여서 그런 것도 있긴 하지만,
가시적으로 적은 양의 코드를 보면 조금 부럽긴 하다...

profile
하루 하루 즐겁게

0개의 댓글