"μ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€ with νμ΄μ¬" λ΄μ©μ κΈ°λ°μΌλ‘ μ μνμμ΅λλ€.
(https://www.youtube.com/watch?v=KGyK-pNvWos&t=2349s)
μ λ ¬μ΄λ?
- λ°μ΄ν°λ₯Ό νΉμ ν κΈ°μ€μ λ°λΌ μμλλ‘ λμ΄νλ κ²μ΄λ€.
- λ¬Έμ μ λ°λΌ μ μ ν μ λ ¬ μκ³ λ¦¬μ¦μ΄ μ¬μ©λλ€.
μμ κ°μ΄ μ λ ¬λμ§ μμ μμ΄μ μ λ ¬νλ €λ©΄ μ΄λ»κ² ν΄μΌλ κΉ ?
μ λ ¬ μκ³ λ¦¬μ¦μλ ν¬κ² 4κ°μ§κ° μλ€.
1. μ ν μ λ ¬
- μ²λ¦¬λμ§ μμ λ°μ΄ν° μ€μμ κ°μ₯ μμ λ°μ΄ν°λ₯Ό μ νν΄ λ§¨ μμ μλ λ°μ΄ν°μ λ°κΎΈλ κ²μ λ°λ³΅νλ€.
7 | 5 | 9 | 0 | 3 | 1 | 6 | 2 | 4 | 8 |
첫λ²μ§Έ λ¨κ³μμλ 0μ΄ μ μΌ μμΌλ―λ‘ 0κ³Ό 7μ κ΅ννλ€.
0 | 5 | 9 | 7 | 3 | 1 | 6 | 2 | 4 | 8 |
λλ²μ§Έ λ¨κ³μμλ 1μ΄ μ μΌ μμΌλ―λ‘ 5μ κ΅ννλ€.
0 | 1 | 9 | 7 | 3 | 5 | 6 | 2 | 4 | 8 |
μ΄λ κ² λ¨κ³λ₯Ό μ§νν΄λκ°λ€ 보면 κ²°κ΅ 0λΆν° 9κΉμ§ μ λ ¬μ΄ λλ€.
μκ°λ³΅μ‘λ : O(N^2)
μμ€μ½λ
import java.util.*;
public class Solution {
public static void main(String[] args) {
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
for(int i=0;i<arr.length;i++){
int min_idx = i;
for(int j=i+1;j<arr.length;j++){
if(arr[min_idx] > arr[j]){
min_idx = j;
}
}
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
for (int num : arr) {
System.out.print(num+" ");
}
}
}
2. μ½μ μ λ ¬
- μ²λ¦¬λμ§ μμ λ°μ΄ν°λ₯Ό νλμ© κ³¨λΌ μ μ ν μμΉμ μ½μ νλ€.
- μ ν μ λ ¬λ³΄λ€ λ ν¨μ¨μ μΌλ‘ λμνλ€.
7 | 5 | 9 | 0 | 3 | 1 | 6 | 2 | 4 | 8 |
첫λ²μ§Έ λ¨κ³μμλ 5μ μμΉλ₯Ό κ²°μ νλ€. 7μ μ€λ₯Έμͺ½ or μΌμͺ½μΌλ‘ κ°κ² λλλ° 7λ³΄λ€ μκΈ° λλ¬Έμ 7μ μΌμͺ½μΌλ‘ μ΄λνλ€.
5 | 7 | 9 | 0 | 3 | 1 | 6 | 2 | 4 | 8 |
λλ²μ§Έ λ¨κ³μμλ 9μ μμΉλ₯Ό μ νλ€. νμ§λ§ μμ μλ λ κ°μ μ«μλ³΄λ€ 9κ° λ ν¬λ―λ‘ μμΉλ₯Ό λ³κ²½νμ§ μλλ€.
(μ ννλ λ°λ‘ μμ 7λ³΄λ€ μ»€μ λ°λ‘ μ λ ¬μ λ©μΆλ€,)
μ΄λ°μμΌλ‘ μ λ ¬μ μ§ννλ©΄ 0λΆν° 9κΉμ§ μ λ ¬μ΄ λλ€.
μκ° λ³΅μ‘λ: O(N^2)
μμ€μ½λ
import java.util.*;
public class Solution {
public static void main(String[] args) {
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
for(int i=1;i<arr.length;i++){
for(int j=i;j>0;j--){
if(arr[j-1] > arr[j]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
else break;
}
}
for (int num : arr) {
System.out.print(num+" ");
}
}
}
3. ν΅ μ λ ¬
- κΈ°μ€ λ°μ΄ν°λ₯Ό μ€μ νκ³ κ·Έ κΈ°μ€λ³΄λ€ ν° λ°μ΄ν°μ μμ λ°μ΄ν°μ μμΉλ₯Ό λ³κ²½
- νλ‘κ·Έλλ° μΈμ΄μ μ λ ¬ λΌμ΄λΈλ¬λ¦¬μ κ·Όκ°
- λ³΄ν΅ μ²« λ²μ§Έ λ°μ΄ν°λ₯Ό κΈ°μ€(pivot)μΌλ‘ νλ€.
5 | 7 | 9 | 0 | 3 | 1 | 6 | 2 | 4 | 8 |
첫λ²μ§Έ λ¨κ³μμλ 5λ₯Ό κΈ°μ€μΌλ‘ νλ€.
κ·Έλ λ€λ©΄ μΌμͺ½μμλΆν° 7μ 5λ³΄λ€ ν¬κΈ°μ μ νλκ³ , μ€λ₯Έμͺ½μμλΆν°μ 4λ 5λ³΄λ€ μκΈ°μ μ νλλ€.
μ΄μ λμ μμΉλ₯Ό λ°κΎΌλ€.
5 | 4 | 9 | 0 | 3 | 1 | 6 | 2 | 7 | 8 |
μ΄μ μͺ½μμλΆν° 9λ 5λ³΄λ€ ν¬κΈ°μ μ νλκ³ , μ€λ₯Έμͺ½μμλΆν°μ 2λ 5λ³΄λ€ μκΈ°μ μ νλλ€.
λ€μ λμ μμΉλ₯Ό λ°κΎΌλ€.
μ΄λ κ² μ§ννλ€λ³΄λ©΄ λ°μ΄ν°μ μμΉκ° μκ°λ¦¬λ μκ°μ΄ μ¬κ²μ΄λ€.
κ·Έλ μμ λ°μ΄ν°μ νΌλ²κ°μ μμΉλ₯Ό λ³κ²½νλ€
1 | 4 | 2 | 0 | 3 | 5 | 6 | 9 | 7 | 8 |
μ΄λ κ² λλ©΄ μΌμͺ½ λ°μ΄ν°λ 5λ³΄λ€ μκ³ , μ€λ₯Έμͺ½ λ°μ΄ν°λ 5λ³΄λ€ ν¬λ€.
μ΄μ²λΌ νΌλ²μ κΈ°μ€μΌλ‘ λ°μ΄ν°λ₯Ό λλλ κ²μ λΆν μ΄λΌκ³ νλ€.
μμμ μ§ννλ κ²μ²λΌ λΆν λ λ°μ΄ν°μμ λ€μ ν΅μ λ ¬μ μ μ©νλ©΄ λλ€.
μκ°λ³΅μ‘λ : μΌλ°μ μΌλ‘ O(NlogN) , μ΅μ μ κ²½μ° O(N^2)
μμ€μ½λ
import java.util.*;
public class Solution {
public static void main(String[] args) {
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
quickSort(arr,0,arr.length-1);
for (int num : arr) {
System.out.print(num+" ");
}
}
public static void quickSort(int[] arr,int start,int end){
if(start >= end) return;
int pivot = start;
int left = start+1;
int right = end;
while (left <= right){
while (left <= end && arr[left] <= arr[pivot]) left++;
while(right > start && arr[right] >= arr[pivot]) right--;
if(left > right){
int temp = arr[pivot];
arr[pivot] = arr[right];
arr[right] = temp;
}
else{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
quickSort(arr,start,right-1);
quickSort(arr,right+1,end);
}
}
4. κ³μ μ λ ¬
- νΉμ ν μ‘°κ±΄μ΄ λΆν©ν λλ§ λ§€μ° λΉ λ₯΄κ² λμνλ€.
- λ°μ΄ν°μ ν¬κΈ° λ²μκ° μ νλμ΄ μ μ ννλ‘ ννν μ μμλλ§ κ°λ₯νλ€.
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
λ¨Όμ ν¬κΈ°κ° 0 μΈ λ°°μ΄μ λ§λ€μ΄μ€λ€.
7 | 7 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 5 |
λ§μ½ μ΄λ° λ°°μ΄μ΄ μλ€λ©΄ κ°κ°μ λ°μ΄ν°κ° λμ€λ μ«μλ₯Ό μΉ΄μ΄ν νκ³ λ°°μ΄μ μ§μ΄ λ£λ λ€λ©΄ ν¨κ³Όμ μΌ κ²μ΄λ€.
λ¨Όμ λ§λ 0 λ°°μ΄μ μ μ©μμΌλ³΄μ
0 | 2 | 2 | 2 | 1 | 1 | 0 | 2 | 0 | 0 |
μ«μλ€μ΄ λ±μ₯ν νμλ§νΌ λ°°μ΄μ νλ¬μ€λ₯Ό ν΄μ£Όμ΄ λ£μ΄μ£Όμλ€.
μ΄μ μ΄κ²μ κ·Έλλ‘ μΆλ ₯ν΄μ£Όλ©΄ λλ€.
μ΄ μκ³ λ¦¬μ¦μ μ΅μ μ κ²½μ°μλ O(N+K)λ₯Ό 보μ₯νμ§λ§ κ²½μ°μ λ°λΌμ μ΅μ μ ν¨μ¨μ λΌ μλ μλ€.
ex) 0κ³Ό 9λ°μ λ°μ΄ν°κ° μλ κ²½μ°μλ λ°μ΄ν°κ° λ κ°λ°μ μλ λ° ν¬κΈ°κ° 10μΈ λ°°μ΄μ λ§λ€μ΄μ μ λ ¬ν΄μΌνλ€.
λ°λΌμ, λμΌν κ°μ΄ μ¬λ¬κ°μΌ κ²½μ° ν¨κ³Όμ μΌλ‘ μλν μ μλ€.
μμ€μ½λ
import java.util.*;
public class Solution {
public static void main(String[] args) {
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
int[] sort = new int[arr.length+1];
for(int i=0;i<arr.length;i++){
sort[arr[i]] ++;
}
for(int i=0;i<sort.length;i++){
for(int j=0;j<sort[i];j++){
System.out.print(i+" ");
}
}
}
}
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] LEVEL2 거리λκΈ° νμΈνκΈ° (Java) (0) | 2023.05.24 |
---|---|
ν¬ ν¬μΈν° μκ³ λ¦¬μ¦μ΄λ ? (νλ‘κ·Έλλ¨Έμ€ - μ°μλ λΆλΆ μμ΄μ ν©) (3) | 2023.05.10 |
[λ°±μ€] 14889λ² μ€ννΈμ λ§ν¬ μλ°(λ°±νΈλνΉ , λΉνΈλ§μ€νΉ) (0) | 2023.03.28 |
[λ°±μ€] 1991λ² νΈλ¦¬μν JAVA (0) | 2023.03.26 |
[λ°±μ€] 11723 μ§ν© JAVA (2) | 2023.03.23 |