μ°μ κΈ°λ‘ πͺ
[C++ μκ³ λ¦¬μ¦] 그리λ(νμλ²,Greedy Algorithm) λ³Έλ¬Έ
[C++ μκ³ λ¦¬μ¦] 그리λ(νμλ²,Greedy Algorithm)
kite707 2021. 8. 8. 18:38κ°λ
그리λ μκ³ λ¦¬μ¦μ κ°λ μ κ΅μ₯ν λ¨μνλ€. λ§ κ·Έλλ‘ νμμ μΌλ‘, λ μμ κ°μ₯ ν° μ΄μ΅μ μΆκ΅¬νλ κΈ°λ²μ΄λ€. μ€μ 그리λ μκ³ λ¦¬μ¦μ κ²μνλ©΄ μλμ κ°μ΄ λμ¨λ€.
νμ μκ³ λ¦¬μ¦μ μ΅μ ν΄λ₯Ό ꡬνλ λ°μ μ¬μ©λλ κ·Όμ¬μ μΈ λ°©λ²μΌλ‘, μ¬λ¬ κ²½μ° μ€ νλλ₯Ό κ²°μ ν΄μΌ ν λλ§λ€ κ·Έ μκ°μ μ΅μ μ΄λΌκ³ μκ°λλ κ²μ μ νν΄ λκ°λ λ°©μμΌλ‘ μ§ννμ¬ μ΅μ’ μ μΈ ν΄λ΅μ λλ¬νλ€.
μΌλ°μ μΌλ‘ μκ°νμ λ λμμ μ΄μ΅λ§μ μ«λ κ²μ΄ μ΅μ μ μ νμ΄λΌκ³ λ ν μ μλ€. κ°λ Ή μλμ κ°μ μν©μ΄ μλ€κ³ μκ°ν΄λ³΄μ.
μμ 1
κ° κ·Έλ¦Όμ μ ν μ«μλ λ¬Έμ λ₯Ό νΈλλ° κ±Έλ¦¬λ μκ°μ΄κ³ μ°λ¦¬λ κ°μ₯ λΉ λ₯Έ μκ°μμ level1, level2, level3λ¬Έμ λ₯Ό νλμ© ν΄κ²°νλ € νλ€. μ΄λ λ¬Έμ λ₯Ό νΈλ μκ°μ μ΅μν νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ?
μμ μ€λͺ νλ―μ΄ κ·Έλ¦¬λλ λ· μν©μ μκ°νμ§ μλλ€. λ¨μν λ μμ μ΄μ΅λ§μ μΆκ΅¬νλ μκ³ λ¦¬μ¦μ΄λ€. κ·Έλμ 그리λ μκ³ λ¦¬μ¦μ μ μ©νλ€λ©΄ μλμ κ°μ΄ λ κ²μ΄λ€. μ΄ 45λΆμ΄ μμλλ€.
κ·Έλ μ§λ§ μ€μ λ‘ λ¬Έμ λ₯Ό νΈλ μκ°μ μ΅μν νλ λ°©λ²μ μλμ κ°λ€. 42λΆμ΄ μμλλ€.
μ¬κΈ°κΉμ§ λ΄€μ λμλ 그리λ μκ³ λ¦¬μ¦μ λλ체 μ΄λλ€ μ°λ μΆμ μλ μλ€. κ·Έλ¬λ μ΄ μκ³ λ¦¬μ¦μ λ¨μνλ§νΌ μ€ν μκ°μ΄ λΉ λ₯΄λ€. 그리λ λ¬Έμ λ₯Ό μ€λͺ νλ κ°μ₯ λνμ μΈ μμλ λμ λ¬Έμ μ΄λ€. μλ λ¬Έμ λ₯Ό νμ΄λ³΄λλ‘ νμ.
μμ 2
500μ, 100μ, 10μ λμ μ΄ λ¬΄μν λ§λ€κ³ κ°μ ν λ κ°μ₯ μ μ μμ λμ μ μ΄μ©ν΄μ 1410μμ λ§λ λ€κ³ νμ. μ΄λ μ¬μ©νλ λμ μ κ°μλ λͺκ°μΈκ°?
μ΄ λ¬Έμ λ₯Ό μ νλ€λ©΄ μΌλ°μ μΌλ‘ 500μμ μ¬μ©ν μ μλ νλκΉμ§ μ¬μ©ν κ²μ΄λ€. κ·Έλμ 500μμ§λ¦¬ 2κ°λ‘ 1000μμ λ§λ€κ³ , 100μμ§λ¦¬ 4κ°λ‘ 400μμ, 10μ λμ 1κ°λ‘ 10μμ λ§λ€μ΄ 1410μμ μμ±ν κ²μ΄λ€. κ·Έλμ μ΄ λ¬Έμ μ λ΅μ 7κ°μ΄λ€. μ΄ λ¬Έμ μλ 그리λ μκ³ λ¦¬μ¦μ΄ μ¬μ©λμλ€. μΈ μ μλ λμ μ€ κ°μ₯ μ‘μκ° ν° κ²λΆν° μμλλ‘ μ¬μ©ν΄ λκ° κ²μ΄λ€. μ΄ νλμ λ°λ³΅νλ©΄ λ¬Έμ λ₯Ό νμ΄λΌ μ μλ€.
μ΄ λ¬Έμ λ₯Ό μμ κ°μ΄ λ¨μν λ°©λ²μΌλ‘ νμ΄λΌ μ μλ μ΄μ λ μμ μ‘μ λμ μ΄ ν° μ‘μ λμ μ μ½μμ΄κΈ° λλ¬Έμ΄λ€. μ¦, 100μ 5κ°λ‘ λ§λ€μ μλ μ‘μλ 500μ λμ νκ°λ‘ λ§λ€ μ μλ€. κ·Έλ κΈ° λλ¬Έμ ν° μ‘μμ λμ λΆν° μ¬μ©ν΄ λκ°λ©΄ κ°μ₯ μ μ λμ μ μ¬μ©νλ€κ³ 보μ₯ν μ μλ κ²μ΄λ€.
μ 리λ₯Ό ν΄λ³΄μλ©΄ 그리λ μκ³ λ¦¬μ¦μ νΉμ μν©μμλ§ μ¬μ©ν μ μλ€. μ¦ κ·Έλ¦¬λλ₯Ό μ¬μ©ν λ°©λ²μ΄ μ λ΅μ΄λΌλ 보μ₯μ΄ λμ΄μΌ μ¬μ©ν μ μλ€. μμμ λ΄€λ―μ΄ μμ 2μ κ²½μ° λμ κ°μ λ°°μ, μ½μ κ΄κ³κ° μ±λ¦½νκΈ° λλ¬Έμ 그리λλ₯Ό μ¬μ©ν μ μμλ€. λ§μΌ 500μ 400μ 100μ λμ μΌλ‘ 2800μμ λ§λ λ€κ³ κ°μ ν΄λ³΄μ. μμμ ν λ°©μλλ‘ 500μ λμ λΆν° μ¬μ©μ νλ€λ©΄ 500μ 5κ°, 100μ 3κ°λ₯Ό μ΄μ©ν΄ μ΄ 8κ°μ λμ μ μ¬μ©νλ€. νμ§λ§ κ°μ₯ λμ μ μ κ² μ¬μ©νλ λ°©λ²μ 500μ λμ μ 4κ°, 400μ λμ μ 2κ°, μ΄ 6κ°μ λμ μ μ¬μ©νλ λ°©λ²μ΄λ€. κ·Έλμ μμμ λ§νλ― κ·Έλ¦¬λλ₯Ό μ¬μ©νλ €λ©΄ μ΄ λ°©λ²μ΄ μ΅μ μ΄λ€ λΌλ κ·Όκ±°κ° μμ΄μΌ νλ€.
κ·Έλμ λͺ¨λ κ·Έλ°κ²μ μλμ§λ§ 그리λ λ¬Έμ λ μΌλ°μ μΌλ‘ μ΅λν μ μ, μ΅λν λ§μ μ΄λΌλ λ¬Έκ΅¬κ° λ¬Έμ μ λ€μ΄κ°λ κ²½μ°κ° λ§λ€. μ΅λ/μ΅μμ κ²½μ°μ μλ₯Ό ꡬν κ²μ μꡬνλ λ¬Έμ λ€μ΄λ€. κ·Έλ¦¬κ³ κ·Έλ¦¬λλ₯Ό μ¬μ©ν μ μλ μ‘°κ±΄μ΄ μ£Όμ΄μ§λ€. μ λμ λ¬Έμ λ λ¨μν μμμ§λ§ λμ κ°μ λ°°μ, μ½μ κ΄κ³κ° κ·Έ 쑰건μ΄λ€. λ¬Όλ‘ μ΄λ¬ν 쑰건μ λ¬Έμ λ΄μ μ¨κ²¨μ Έμμ΄ μ°Ύμλ΄μΌ νλ κ²½μ°κ° λ§λ€.
그리λ μκ³ λ¦¬μ¦
1. μΌλ°μ μΌλ‘ μ΅λν μ μ, μ΅λν λ§μ μ΄λΌλ λ¬Έκ΅¬κ° λ¬Έμ μ λ€μ΄κ°λ κ²½μ°κ° λ§λ€. μ΅λ/μ΅μμ κ²½μ°μ μλ₯Ό ꡬν κ²μ μꡬνλ λ¬Έμ λ€μ΄λ€.
2. 그리λλ₯Ό μ¬μ©ν μ μλ μ‘°κ±΄μ΄ μ£Όμ΄μ§λ€. (μ£Όλ‘ λ¬Έμ λ₯Ό μ½κ³ 쑰건μ μ°ΎμμΌνλ€.)
3.μ λ ¬μ ν λ€ κ·Έκ²μ μ΄μ©ν΄ νΈλ λ¬Έμ κ° λ§λ€. (μ λμ λ¬Έμ μ κ²½μ°μλ λμ μ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬ν λ€ νλ νλ μ¬μ©ν΄ λκ°μΌ ν κ²μ΄λ€.)
λ§μ§λ§μΌλ‘ μλ λ¬Έμ λ₯Ό 보λλ‘ νμ.
μ΄ λ¬Έμ λ λλλΉλμ κ°μ μμμμ λμ€λ λ¬Έμ μ΄λ€.
https://www.youtube.com/watch?v=2zjoKjt97vQ&t=1913s
μ΄ λ¬Έμ μμ 그리λλ‘ νμ΄λΌ μ μλλ° κ·Έ μ΄μ λ Nμμ 1μ λΉΌλ κ² λ³΄λ€ Kλ‘ λλλ κ²μ΄ λ 빨리 1μ λ§λ€ μ μλ€λ κ²μ΄ 보μ₯λκΈ° λλ¬Έμ΄λ€. μ¦ Kλ‘ λλ μ§ λλ§λ€ λλκ³ , κ·Έκ²μ΄ λμ§ μμΌλ©΄ 1μ λΉΌλκ²μ λ°λ³΅νλ©΄ λλ κ²μ΄λ€.
κ°μ΄ νλ©΄ μ’μ λ¬Έμ
λ¬Έμ λ₯Ό λ§μ΄ νμ΄λ³΄λ©΄μ "μ΄λ°κ²μ΄ 그리λꡬλ" νλ κ°μ μ΅νκ°λ κ²μ΄ μ’μ κ² κ°λ€.
μλ λ λ¬Έμ λ 그리λλΌλ κ²λ§ μλ©΄ μ΄λ ΅μ§ μκ² νμ΄λΌ μ μλ€.
https://www.acmicpc.net/problem/4796
4796λ²: μΊ ν
μ λ ₯μ μ¬λ¬ κ°μ ν μ€νΈ μΌμ΄μ€λ‘ μ΄λ£¨μ΄μ Έ μλ€. κ° ν μ€νΈ μΌμ΄μ€λ ν μ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , L, P, Vλ₯Ό μμλλ‘ ν¬ν¨νκ³ μλ€. λͺ¨λ μ λ ₯ μ μλ intλ²μμ΄λ€. λ§μ§λ§ μ€μλ 0μ΄ 3κ° μ£Όμ΄μ§λ€.
www.acmicpc.net
https://www.acmicpc.net/problem/2839
2839λ²: μ€ν λ°°λ¬
μκ·Όμ΄λ μμ¦ μ€ν곡μ₯μμ μ€νμ λ°°λ¬νκ³ μλ€. μκ·Όμ΄λ μ§κΈ μ¬νκ°κ²μ μ€νμ μ ννκ² Nν¬λ‘κ·Έλ¨μ λ°°λ¬ν΄μΌ νλ€. μ€ν곡μ₯μμ λ§λλ μ€νμ λ΄μ§μ λ΄κ²¨μ Έ μλ€. λ΄μ§λ 3ν¬λ‘κ·Έ
www.acmicpc.net
그리λ λ¬Έμ νΉμ±μ μ΄λ»κ² ν΄μΌ μ΅μ ν΄λ₯Ό ꡬν μ μμκΉ?λ₯Ό λ§μ΄ κ³ λ―Όν΄ λ³΄λ©° νμ΄μΌ νλ€. μλ λ¬Έμ μμ λ§μ°¬κ°μ§μ΄λ€. 1 1κ³Ό κ°μ΄ μμνλ μκ°κ³Ό λλλ μκ°μ΄ κ°μ κ²½μ°λ μλ€λ κ²μ κ³ λ €νλ©° λ¬Έμ λ₯Ό νμ΄λ³΄μ. λ μ΄λ€ κΈ°μ€μΌλ‘ μ λ ¬νλκ²μ΄ μ’μμ§ κ³ λ―Όν΄λ³΄μ.
https://www.acmicpc.net/problem/1931
1931λ²: νμμ€ λ°°μ
(1,4), (5,7), (8,11), (12,14) λ₯Ό μ΄μ©ν μ μλ€.
www.acmicpc.net
'Computer Science > μλ£κ΅¬μ‘° & μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++] μ«μ μλ¦Ώμ λνκΈ° (0) | 2021.09.07 |
---|---|
[C++ μκ³ λ¦¬μ¦] λΆν μ 볡(Divide and conquer) (0) | 2021.08.28 |
[C++ μκ³ λ¦¬μ¦] λμ κ³νλ²(Dynamic Programming) (2) | 2021.07.31 |
[C++μλ£κ΅¬μ‘°] λ°°μ΄(Array)ꡬν (2) | 2021.04.10 |
[C++ μλ£κ΅¬μ‘°] λ¨μΌ μ°κ²° 리μ€νΈ(Singly Linked List) - κΈ°λ³Έ (0) | 2021.03.04 |