Greedy Algorithmπ
νμ μκ³ λ¦¬μ¦μ λ§ κ·Έλλ νμμ€λ¬μ΄ μ΄λΌλ μλ―Έλ₯Ό κ°μ§λ©° , μ νμ μκ°μ΄ μ€λ©΄ λμμ 보μ΄λ μ΅μ μ μν©λ§μ κ³ λ €νμ¬ μ΅μ’ μ μΈ ν΄λ΅μ λλ¬νλ λ°©λ²μ λ§ν©λλ€. μ΄ μκ³ λ¦¬μ¦μ κ° μ νμ μκ°μλ μ΅μ μΌλ‘ λ³΄μΌ μ μμ§λ§, κ·Έ μ νμ΄ μ 체μ μΌλ‘ 보μμ λ μ΅μ μΈμ§λ 보μ₯λμ§ μμ μ μμ΅λλ€.
Greedy Algorithm λΆκ°λ₯ν κ²½μ°
1. νμ¬ μν©μμλ λ§μλ©λ‘ 1κ°λ₯Ό λ°μ μ μμ΅λλ€.(νμ¬ μμ μμμ μ΅μ μ μ ν)
2. κ·Έλ¬λ 5λΆμ κΈ°λ€λ¦¬λ©΄ 2κ°μ λ§μλ©λ‘λ₯Ό λ°μ μ μμ΅λλ€. (λ―Έλλ₯Ό κ³ λ €ν μ ν)
그리λ μκ³ λ¦¬μ¦μ λ°λ₯΄λ©΄ κ° λ¨κ³μμ νμ¬ μ΅μ μΌλ‘ 보μ΄λ μ νμ νκΈ° λλ¬Έμ νμ¬ μμ μμ 1κ°μ λ§μλ©λ‘λ₯Ό λ°λ κ²μ΄ μ νλ κ²μ λλ€. κ·Έλ¬λ λ―Έλλ₯Ό κ³ λ €ν κ²½μ° 5λΆμ κΈ°λ€λ¦°λ€λ©΄ 2κ°μ λ§μλ©λ‘λ₯Ό λ°λ κ²μ΄ λ λ§μ λ§μλ©λ‘λ₯Ό λ°λ μ΅μ μ μ νμ λλ€. λ°λΌμ 그리λ μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ νμ 1κ°μ λ§μλ©λ‘λ§ λ°κ² λ©λλ€. νμ§λ§ μ΅μ μ ν΄λ₯Ό μ°ΎκΈ° μν΄μλ λ―Έλμ μν©μ κ³ λ €ν΄μΌ νλ―λ‘ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ μ μ νμ§ μμ΅λλ€.
Greedy Algorithm μ λΉμ± - μ΅μ ν΄ λμΆ
νμμ μ ν μμ±
κ° λ¨κ³μμ μ΅μ μΌλ‘ 보μ΄λ μ νμ νμ¬λ μ 체μ μΌλ‘ νμ μ΅μ μ ν΄λ₯Ό 보μ₯νλ€λ μλ―Έ, μ¦ κ° λ¨κ³μμμ μ νμ΄ κ·Έ μκ°μλ μ΅μ μΌλ‘ 보μ΄μ§λ§, μ΄λ¬ν μ νλ€μ΄ λͺ¨μ¬μ μ΅μ’ μ μΌλ‘λ μ 체 λ¬Έμ μ μ΅μ ν΄λ₯Ό ꡬμ±ν©λλ€.
λ¬Έμ
κ°κ²μμ 물건μ μ¬κ³ λμ μ§λΆν λ, κ±°μ€λ¦λμΌλ‘ μ€μΌ νλ λμ μ κ°μλ₯Ό μ΅μννλ λ¬Έμ μ λλ€.
μμ
물건 κ°κ²©μ΄ 520μμ΄κ³ μλμ΄ 1000μμ μ§λΆνλ€κ³ ν λ μ΅μνμ λμ κ°μλ‘ κ±°μ€λ¦λμ μ£Όλ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ?
κ°μ₯ ν° λ¨μμ λμ μ μ¬μ©νμ¬ κ±°μ€λ¦λμ μ£Όλ κ²μ΄ μ΅μ μ ν΄λ₯Ό ꡬν μ μλ κ²½μ°
ν΄κ²°λ°©λ²
- μλμ΄ μ§λΆν λμ 물건μ κ°κ²©μ λΊ 480μμ΄ κ±°μ€λ¦λμ λλ€.
- κ±°μ€λ¦λμ μ£ΌκΈ° μν΄ κ°μ₯ ν° λ¨μμ λμ λΆν° μ¬μ©νκ² λ©λλ€. κ°μ₯ ν° λ¨μμ λμ μ 500μμ λλ€.
- κ·Έλ¬λ κ±°μ€λ¦λμ΄ 480μ μ΄λ―λ‘ 500μμ μ¬μ©ν λλ©΄ 20μμ΄ μ΄κ³Όνκ² λ©λλ€. λ°λΌμ 500μμ§λ¦¬ λμ μ μ¬μ©νμ§ μμ΅λλ€.
- λ€μμΌλ‘ ν° λ¨μμΈ λμ 100μμ§λ¦¬λ₯Ό μ¬μ©ν΄ 100μμ§λ¦¬ λμ 4κ°λ₯Ό μ£Όκ³ , λ¨μ κ±°μ€λ¦λ 480 - 400 = 80 μ΄ λ©λλ€.
- λ¨μ κ±°μ€λ¦λ 80μμ λν΄ λ€μ ν° λ¨μ λμ λΆν° μλν©λλ€.
- 80μμμ 50μμ§λ¦¬ λμ μ μ¬μ©νλ©΄ λ¨μ κ±°μ€λ¦λμ 30μμ΄ λ©λλ€.
- λ¨μ κ±°μ€λ¦λ 30μμ λν΄ λ€μ ν° λμ λΆν° μλν©λλ€.
- 30μ μμ 10μμ§λ¦¬ λμ 3κ°λ₯Ό μ¬μ©νμ¬ κ±°μ€λ¦λμ μ€λλ€.
μ΅μ λΆλΆ ꡬ쑰
ν° λ¬Έμ λ₯Ό μμ λΆλΆ λ¬Έμ λ‘ λλ μ μκ³ , κ° λΆλΆ λ¬Έμ μ μ΅μ ν΄κ° μ 체 λ¬Έμ μ μ΅μ ν΄μ κΈ°μ¬ν μ μλ€λ κ°λ , μ¦ μ 체 λ¬Έμ λ₯Ό μμ λ¨μλ‘ λΆν νμ¬ κ° λ¨κ³μμ μ΅μ ν΄λ₯Ό μ°ΎμΌλ©΄ μ΄λ₯Ό μ‘°ν©νμ¬ μ 체 λ¬Έμ μ μ΅μ ν΄λ₯Ό μ°Ύμ μ μμ΅λλ€.
ν° λ¬Έμ λ₯Ό ν΄κ²°νλ μ΅μ μ λ°©λ²μ΄ κ·Έ λ¬Έμ λ₯Ό ꡬμ±νλ μμ λΆλΆλ€μ μ΅μ μ ν΄κ²° λ°©λ²μΌλ‘ ꡬμ±λ μ μλ€λ κ°λ μ΄λ©° μλ₯Ό λ€μ΄λ³΄λ©΄ μμΈμμ λΆμ°κΉμ§ κ°λ μ΅λ¨ κ²½λ‘ λ¬Έμ λΌκ³ μκ°ν΄ 보면, μ΄ λ¬Έμ λ μμΈμμ λꡬκΉμ§μ μ΅λ¨ κ²½λ‘μ λꡬμμ λΆμ°κΉμ§μ μ΅λ¨ κ²½λ‘λΌλ λ κ°μ λΆλΆ λ¬Έμ λ‘ λλ μ μμ΅λλ€. μμΈμμ λꡬκΉμ§ κ°λ μ΅λ¨ κ²½λ‘κ° 200km , λꡬμμ λΆμ°κΉμ§ κ°λ μ΅λ¨ κ²½λ‘κ° 80kmμΌ λ μ 체 κ²½λ‘μ μ΅λ¨ 거리λ μ΄ λ λΆλΆ λ¬Έμ μ ν΄κ²° λ°©λ²μ ν©μΉ 280kmκ° λ©λλ€. λ°λΌμ, 볡μ‘ν λ¬Έμ μ μ΅μ ν΄λ κ·Έ λ¬Έμ λ₯Ό ꡬμ±νλ λ μμ λΆλΆ λ¬Έμ λ€μ μ΅μ ν΄λ₯Ό κ²°ν©ν¨μΌλ‘μ¨ μ°Ύμ μ μλ€λ κ²μ΄ μ΅μ λΆλΆ ꡬ쑰μ ν΅μ¬ μ리μ λλ€.
νμλ² λ¬Έμ μ μ©
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// λ°°μ΄λ‘ 체μ‘볡 보μ μ¬λΆ
int[] students = new int[n];
// μμ΄λ²λ¦° νμ
for (int i : lost){
students[i - 1]--;
}
// κ°μ§κ³ μλ νμ
for (int j : reserve){
students[j - 1]++;
}
// λΉλ €μ€
for (int k = 0; k < students.length; k++){
//λλ
if(students[k] == -1){
//μ λ²νΈ μ¬λ² 체μ‘볡
if(k - 1 >= 0 && students[k-1] == 1){
students[k]++;
students[k - 1]--;
//λ· λ²νΈ μ¬λ² 체μ‘볡
} else if (k + 1 < students.length && students[k + 1] == 1) {
students[k]++;
students[k + 1]--;
}
}
}
// λ£λ νμμ
int studentsCount = 0;
for (int s : students) {
if(s>=0){
studentsCount++;
}
}
return studentsCount;
}
}
μ΄κΈ° μ€μ
νμλ€μ 체μ‘볡 μνλ₯Ό λνλ΄κΈ° μν λ°°μ΄ studentsλ₯Ό μμ±ν©λλ€. λ°°μ΄μ κ° μμλ ν΄λΉ νμμ 체μ‘볡 보μ μνλ₯Ό λνλ λλ€ (κΈ°λ³Έκ° 0: 체μ‘볡μ λ± λ§κ² κ°μ§κ³ μμ, -1: 체μ‘볡μ μμ΄λ²λ¦Ό, 1: μ¬λΆμ 체μ‘λ³΅μ΄ μμ).
체μ‘볡 μν μ λ°μ΄νΈ
λ¨Όμ lost λ°°μ΄μ μννμ¬ μ²΄μ‘볡μ μμ΄λ²λ¦° νμμ students λ°°μ΄μμ ν΄λΉ νμμ κ°μ -1λ‘ κ°μμν΅λλ€.
reserve λ°°μ΄μ μννμ¬ μ¬λΆμ 체μ‘볡μ κ°μ§ νμμ students λ°°μ΄μμ ν΄λΉ νμμ κ°μ 1λ‘ μ¦κ°μν΅λλ€.
체μ‘볡 λΉλ €μ£ΌκΈ°
students λ°°μ΄μ μννλ©΄μ 체μ‘볡μ μμ΄λ²λ¦° νμ(-1)μ μ°Ύμ΅λλ€.
κ° μμ΄λ²λ¦° νμμ λνμ¬, μ λ²νΈ νμλΆν° μ¬λΆμ 체μ‘볡(1)μ κ°μ§ νμμ΄ μλμ§ νμΈνκ³ , μλ€λ©΄ κ·Έ νμμΌλ‘λΆν° 체μ‘볡μ λΉλ¦½λλ€. μ λ²νΈ νμμκ²μ λΉλ¦΄ μ μλ κ²½μ°, λ· λ²νΈ νμμκ²μ λΉλ¦½λλ€.
μ¬λΆμ 체μ‘볡μ λΉλ €μ€ λλ§λ€ ν΄λΉ νμμ students λ°°μ΄ κ°μ μ‘°μ νμ¬, 체μ‘볡μ λΉλ¦° νμμ 0μΌλ‘ (체μ‘볡μ κ°μ§ μνλ‘), 체μ‘볡μ λΉλ €μ€ νμμ 1μμ 0μΌλ‘ μ‘°μ ν©λλ€.
μ²΄μ‘ μμ μ λ€μ μ μλ νμ μ κ³μ°
λ§μ§λ§μΌλ‘, students λ°°μ΄μ μννλ©΄μ 체μ‘볡μ κ°μ§κ³ μλ νμμ μλ₯Ό μΈμ΄ (students λ°°μ΄μ κ°μ΄ 0 λλ 1μΈ νμ), μ΄λ₯Ό λ°νν©λλ€.
νμμ μ νμ μ μ©
μ΄ λ¬Έμ μμ νμμ μ νμ μμ΄λ²λ¦° νμμ΄ μ²΄μ‘볡μ λΉλ¦΄ μ μμ λ, κ°λ₯ν ν κ°κΉμ΄ λ²νΈμ νμμΌλ‘λΆν° λΉλ¦¬λ κ²μ λλ€. μ΄ λ°©μμ κ° λ¨κ³μμ μ§μμ μΌλ‘ μ΅μ μ μ νμ νμ¬, μ 체μ μΌλ‘λ μ΅λν λ§μ νμμ΄ μ²΄μ‘ μμ μ λ€μ μ μλλ‘ ν©λλ€. μ¬κΈ°μ μ§μμ μΌλ‘ μ΅μ μ΄λ, μμ΄λ²λ¦° νμ λ°λ‘ μμ΄λ λ°λ‘ λ€μ νμμΌλ‘λΆν° 체μ‘볡μ λΉλ¦¬λ κ²μ μλ―Έν©λλ€. μ΄λ¬ν νμμ μ κ·Ό λ°©μμ μ΄ λ¬Έμ μ ꡬ쑰μ λ§μλ¨μ΄μ Έ, μ 체μ μΌλ‘λ μ΅μ μ κ²°κ³Ό(μ΅λν λ§μ νμμ΄ μ²΄μ‘ μμ μ λ£λ κ²)λ₯Ό λμΆν μ μμ΅λλ€.
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μμ νκΈ°λ² (0) | 2024.02.26 |
---|---|
ν΄μλ² (0) | 2024.02.20 |
κΈ°μ μ λ ¬ (0) | 2024.01.04 |