[이것이 코딩 테스트다 with Python] 두 배열의 원소 교체(Java)
Goal
“이것이 코딩 테스트다 with Python” 교재의 문제를 분석하고 코드와 함께 이해해보기 위한 글입니다.
문제 분석
시간복잡도 O(NlogN)을 지켜야 하므로 주어지는 두 배열을 Arrays.sort()
를 이용해 정렬합니다. 다만, 두 번째 배열은 내림차순으로 정렬할 것이기 때문에 래핑클래스로 선언합니다.
마지막으로, 두 배열의 원소를 교체하기 전에 크기가 더 큰 것이 맞는지 확인합니다.
코드 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class SwapTwoArraysElem { //p182
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] f = new int[n];
Integer[] t = new Integer[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
f[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
t[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(f);
Arrays.sort(t, Collections.reverseOrder());
for (int i = 0; i < k; i++) {
if (f[i] < t[i]) f[i] = t[i];
}
int answer = 0;
for (int i = 0; i < n; i++) {
answer += f[i];
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(String.valueOf(answer));
bw.close();
br.close();
}
}
This post is licensed under CC BY 4.0 by the author.