[ํฌ ํฌ์ธํฐ] 1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ
- ๋ฆฌ์คํธ์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ ๋ ๋ ๊ฐ์ ์ ์ ์์น๋ฅผ ๊ธฐ๋กํ๋ฉด์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ ๋ ฌ ๋์ด ์๋ ๋ ๋ฆฌ์คํธ์ ํฉ์งํฉ์๋ ์ฌ์ฉ๋๋ค. ๋ณํฉ์ ๋ ฌ(merge sort)์ counquer ์์ญ์ ๊ธฐ์ด๊ฐ ๋๊ธฐ๋ ํ๋ค.
์ค๋ช
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๋ ๋ ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ฉด ๋ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ํฉ์ณ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ N(1<=N<=100)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ๋ฐฐ์ด ์์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
์ธ ๋ฒ์งธ ์ค์ ๋ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ M(1<=M<=100)์ด ์ฃผ์ด์ง๋๋ค.
๋ค ๋ฒ์งธ ์ค์ M๊ฐ์ ๋ฐฐ์ด ์์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
๊ฐ ๋ฆฌ์คํธ์ ์์๋ intํ ๋ณ์์ ํฌ๊ธฐ๋ฅผ ๋์ง ์์ต๋๋ค.
์ถ๋ ฅ
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
3
1 3 5
5
2 3 6 7 9
์์ ์ถ๋ ฅ 1
1 2 3 3 5 6 7 9
<<ํ์ด>>
-๋์ ํ์ด-
์๊ฐ๋ณต์ก๋ : O(N)
Arrays.sort()๋ฅผ ํ์ฉํด์ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
import java.util.*;
class Main {
public int[] solution(int N, int M, int[] arr1, int[] arr2) {
int[] answer = new int[N + M];
int index = 0;
for (int x : arr1) {
answer[index++] = x;
}
for (int y : arr2) {
answer[index++] = y;
}
Arrays.sort(answer);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] arr1 = new int[N];
for (int i=0; i<N ; i++) {
arr1[i] = in.nextInt();
}
int M = in.nextInt();
int[] arr2 = new int[M];
for (int j=0; j<M; j++) {
arr2[j] = in.nextInt();
}
for (int x : T.solution(N, M, arr1, arr2)) {
System.out.print(x + " ");
}
}
}
์ฒ์์๋ ArrayList๋ฅผ ํ์ฉํด์ ํ๋ ค๊ณ ํ์ผ๋, list ์ ๋ ฌ์ ๋ํด ์ ๋ชป ์๊ณ ์๋ ๊ฒ ๊ฐ์ Arrays๋ก ๋ฐ๊พธ๊ฒ ๋๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ 'ํฌ ํฌ์ธํฐ' ํ์ฉ์ด ๊ด๊ฑด์ธ๊ฑด ๋ถ๋ช ํ๋ค.
-๊ฐ์ฌ๋ ํ์ด-
์๊ฐ ๋ณต์ก๋ : O(N)
import java.util.*;
class Main {
public ArrayList<Integer> solution(int N, int M, int[] arr1, int[] arr2) {
ArrayList<Integer> answer = new ArrayList<>();
int p1 = 0, p2 = 0;
while(p1 < N && p2 < M) {
if(arr1[p1] < arr2[p2]) answer.add(arr1[p1++]);
else answer.add(arr2[p2++]);
}
while(p1 < N) answer.add(arr1[p1++]);
while(p2 < M) answer.add(arr2[p2++]);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] arr1 = new int[N];
for (int i=0; i<N ; i++) {
arr1[i] = in.nextInt();
}
int M = in.nextInt();
int[] arr2 = new int[M];
for (int j=0; j<M; j++) {
arr2[j] = in.nextInt();
}
for (int x : T.solution(N, M, arr1, arr2)) {
System.out.print(x + " ");
}
}
}
^^ ์ฒ์์ ๋ด๊ฐ ํ๋ ค๋ ArrayList๋ฅผ ์์ฃผ ๋ฉ์ง๊ฒ ํธ์ จ๋ค ใ ใ ^^
์ด๋ฌํ ๋ฐฉ์์ด ํฌ ํฌ์ธํฐ ์ด๋ค. ๋ ๊ฐ์ ์ ์ ์์น์ ๊ฐ์ ๋น๊ตํ๋ฉด์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ ํํ์ด๋ค.
์ด๋ฌํ ๋ฐฉ์์ด ๋ฌด์จ ๋๋์ธ์ง๋ ์๊ฒ ์ผ๋, ํ ์๋ฟ์ง๋ ์๋๋ค.
ํ์คํ๊ฑด ๋ ๊ฐ ํฌ์ธํฐ์ ์ด๋์ด ์์ผ๋ฉด์ ๋น๊ตํด๊ฐ๋ฉฐ list์ add ํด์ฃผ๋ ๊ฒ์ด๋ค.
[์ฌ๋ผ์ด๋ฉ ์๋์ฐ] 3. ์ต๋ ๋งค์ถ (0) | 2023.12.24 |
---|---|
[ํฌ ํฌ์ธํฐ] 2. ๊ณตํต์์ ๊ตฌํ๊ธฐ (1) | 2023.12.23 |
[๋ฐฐ์ด] 12. ๋ฉํ ๋ง (1) | 2023.12.22 |
[๋ฐฐ์ด] 11. ์์๋ฐ์ฅ ์ ํ๊ธฐ (1) | 2023.12.21 |
[๋ฐฐ์ด] 10. ๋ด์ฐ๋ฆฌ (0) | 2023.12.20 |
๋๊ธ