이것이 취업을 위한 코딩 테스트다. 정렬 [두 배열의 원소 교체]

GoshK·2022년 1월 28일
0

이것이 취업을 위한 코딩 테스트다. with 파이썬 - 나동빈

나의 풀이

Java

public class SwapElementsInTwoArrays {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);

        int N = scanner.nextInt();
        int K = scanner.nextInt();

        Integer[] arrA = new Integer[N];
        for(int i = 0; i < N; i++) {
            arrA[i] = scanner.nextInt();
        }

        Integer[] arrB = new Integer[N];
        for(int i = 0; i < N; i++) {
            arrB[i] = scanner.nextInt();
        }

        Arrays.sort(arrA);
        Arrays.sort(arrB, Collections.reverseOrder());

        for(int i = 0; i < K; i++) {
            if(arrA[i] < arrB[i]) {
                int temp = arrA[i];
                arrA[i] = arrB[i];
                arrB[i] = temp;
            } else {
                break;
            }
        }

        System.out.println(Arrays.stream(arrA).mapToInt(a -> a.intValue()).sum());
    }
}

Python

N, K = map(int, input().split())

listA = map(int, input().split())
listB = map(int, input().split())

listA = sorted(listA)
listB = sorted(listB, reverse=True)

for i in range(K):
    if listA[i] < listB[i]:
        listA[i], listB[i] = listB[i], listA[i]
    else:
        break

print(sum(listA))

두개의 배열을 생성하여 A 배열은 오름차, B 배열은 내림차 정렬 해준다.

반복문을 돌면서 A 배열 원소보다 B 배열의 원소가 클 때만 바꿔치기 해준다. A 배열 보다 B 배열이 더 이상 크지 않다면 반복문을 탈출한다.

0개의 댓글