#1 μ ν΄λ¦¬λ νΈμ λ²
λ μμ μ μ A, B (A > B) μ λνμ¬
A = B × Q + R (0 ≤ R < B) μ΄λΌ νλ©΄,
A, Bμ μ΅λ곡μ½μλ
B, Rμ μ΅λ곡μ½μμ κ°λ€.
μ΅λ곡μ½μλ λ μμ μ μμ 곡μ½μ μ€ κ°μ₯ ν° μμ μ μλ₯Ό μλ―Ένλ€. μ ν΄λ¦¬λ νΈμ λ²μ μ΅λ곡μ½μλ₯Ό ꡬνλ μκ³ λ¦¬μ¦μ΄λ€.
#1-1 μ¦λͺ 1: D | Aκ³ D | Bλ©΄ D | Rμ΄λ€.
λ°°κ²½μ§μ: μνμμ Xκ° Yλ‘ λλμ΄ λ¨μ΄μ§λ©΄ μ΄λ₯Ό, Y | XλΌ νννλ€.
72 ÷ 27 = 2 λλ¨Έμ§ 18
μ½μ
- ν° μ (A): 72
- μμ μ (B): 27
- ν° μλ₯Ό μμ μλ‘ λλ λͺ« (Q): 2
- ν° μλ₯Ό μμ μλ‘ λλ λλ¨Έμ§ (R): 18
- ν° μμ μμ μμ 곡μ½μ (D): ? (μμ§ κ°μ΄ λμ§λ λͺ¨λ¦)
μ κ° 1
- A = B × Q + R
- R = A - B × Q
- μλ³μ (÷ D)λ₯Ό μ·¨νλ©΄,
→ R ÷ D = (A ÷ D) - (B ÷ D × Q)
μ κ° 2
- (A ÷ D)μ κ²°κ³Όλ λ°λμ μ μ
- (B ÷ D × Q)μ κ²°κ³Όλ λ°λμ μ μ
- λ°λΌμ (A ÷ D) - (B ÷ D × Q)μ κ²°κ³Ό λν μ μ
- κ·Έλ λ€λ©΄ R ÷ D λν μ μλΌλ λ§
- λλμ
μ κ²°κ³Όκ° μ μ = λλμ΄ λ¨μ΄μ§λ€!
→ Dλ Rμ μ½μ
∴ D | Aκ³ D | Bλ©΄ D | Rμ΄λ€.
#1-2 μ¦λͺ 2: D' | Bκ³ D' | Rμ΄λ©΄ D' | Aμ΄λ€.
72 ÷ 27 = 2 λλ¨Έμ§ 18
μ½μ
- ν° μ (A): 72
- μμ μ (B): 27
- ν° μλ₯Ό μμ μλ‘ λλ λͺ« (Q): 2
- ν° μλ₯Ό μμ μλ‘ λλ λλ¨Έμ§ (R): 18
- μμ μμ λλ¨Έμ§μ 곡μ½μ (D'): ? (μμ§ λͺ¨λ¦)
μ κ° 1
- A = B × Q + R
- μλ³μ (÷ D')λ₯Ό μ·¨νλ©΄,
- → A ÷ D' = (B ÷ D' × Q) + (R ÷ D')
μ κ° 2
- (B ÷ D')μ κ²°κ³Όλ λ°λμ μ μ
- λ°λΌμ (B ÷ D' × Q)μ κ²°κ³Όλ λ°λμ μ μ
- (R ÷ D')μ κ²°κ³Όλ λ°λμ μ μ
- λ°λΌμ (B ÷ D' × Q) + (R ÷ D')μ κ²°κ³Ό λν μ μ
- κ·Έλ λ€λ©΄ A ÷ D' λν μ μλΌλ λ§
- λλμ
μ κ²°κ³Όκ° μ μ = λλμ΄ λ¨μ΄μ§λ€!
→ D'λ Aμ μ½μ
∴ D' | Bκ³ D' | Rμ΄λ©΄ D' | Aμ΄λ€.
#1-3 μ 리
μ΄λ―Έ μ¦λͺ ν κ²
- A = B × Q + R μμ
- Aμ Bμ λͺ¨λ 곡μ½μ μ¦, 곡μ½μ μ§ν© D
→ μ¦λͺ 1μ μν΄, λͺ¨λ Dλ Rμ μ½μμ΄κΈ°λ νλ€. - Bμ Rμ λͺ¨λ 곡μ½μ μ¦, 곡μ½μ μ§ν© D'
→ μ¦λͺ 2μ μν΄, λͺ¨λ D'μ Aμ μ½μμ΄κΈ°λ νλ€.
- Aμ Bμ λͺ¨λ 곡μ½μ μ¦, 곡μ½μ μ§ν© D
μ κ°
- Dμ μνλ μ΄λ€ μ xλ (Rμ μ½μμΌν λ) λ°λμ D'μ λ€μ΄κ°λ€ (D ⊆ D').
- D'μ μνλ μ΄λ€ μ yλ (Aμ μ½μμΌν λ) λ°λμ Dμ λ€μ΄κ°λ€ (D ⊇ D').
- (D ⊆ D') μ΄κ³ (D ⊇ D') μ΄λ―λ‘, Dμ D' μ¬μ΄μ μλ‘ λ€λ₯Έ μμλ λ¨ νλλ μ‘΄μ¬ν μ μλ€.
→ D = D'
∴ A, Bμ μ΅λ곡μ½μλ B, Rμ μ΅λ곡μ½μμ κ°λ€.
#2 μ΅λ곡μ½μ(GCD) ꡬνκΈ°
μ΅λ곡μ½μλ₯Ό ꡬνλ ν¨μ gcd(a, b)κ° μλ€κ³ μΉμ (aμλ ν° μ, bμλ μμ μ ν λΉ). bκ° 0μΌ λ, μ¦ gcd(a, 0)μ΄λ©΄ μ΅λ곡μ½μλ aλ€. 0μ (0μ μ μΈν) λͺ¨λ μλ‘ λλ μ μκΈ° λλ¬Έμ, aμ μ½μ μ€ μ μΌ ν° μμΈ aκ° μ΅λ곡μ½μκ° λλ κ²μ΄λ€.
μ¬κΈ°μ λ°©κΈκΉμ§μ μ¦λͺ (#1)μ λν΄ μ½νλ¦° μμμ μ¨λ³΄μλ©΄,
// Greatest Common Divisor (μ΅λ곡μ½μ)
fun gcd(a: Int, b: Int): Int {
return if (b == 0) {
a
} else {
gcd(b, a % b) // %λ λλμ
κ²°κ³Όμ 'λλ¨Έμ§'λ₯Ό λ°ννλ μ°μ°μ
}
}
λκ° μ΄μν μ μ΄ μλ€. λ°λ‘, a ≥ bμμ νλ¨νμ§ μλλ€λ κ²μ΄λ€. μ κ·Έλ΄κΉ? a < bλΌλ©΄ a % b = aμ΄λ―λ‘, 첫 μ¬κ· νΈμΆμμ gcd(b, a)κ° λμ΄ λ μμ μμΉκ° μλμΌλ‘ λ€μ§νκΈ° λλ¬Έμ΄λ€.
#3 μ΅λ곡배μ(LCM) ꡬνκΈ°
λ°°κ²½μ§μ: 곡ν΅λ μ½μκ° μ€μ§ 1λ°μ μλ(= μ΅λ곡μ½μκ° 1) λ μ μμ κ΄κ³λ₯Ό μλ‘μλΌ νλ€.
μ½μ
- λ μμ μ μ Aμ Bμ μ΅λ곡μ½μλ₯Ό GλΌ νμ.
- A = G × a
- B = G × b
- aμ bμ μ΅λ곡μ½μλ₯Ό dλΌ νμ.
- A = G × d × α
- B = G × d × β
- Aμ Bμ 곡배μλ₯Ό Mμ΄λΌ νμ.
- M = G × a × m
μ κ° 1
- (G × d)λ Aμ Bμ 곡μ½μ
- dλ μ΅λ곡μ½μμ΄λ―λ‘ λ°λμ μμ μ μμ (#1μ μλ μ΅λ곡μ½μμ μ μ μ°Έμ‘°)
- dκ° 1μ΄ μλλ©΄ Aμ Bμ μ΅λ곡μ½μκ° Gκ° μλκ²λλ―λ‘ (λͺ¨μ), dλ λ°λμ 1
→ aμ bλ μλ‘μ
μ κ° 2
- M = G × a × mμ μλ³μ (÷ B)λ₯Ό μ·¨νλ©΄,
M ÷ B = (G × a × m) ÷ B
= (G × a × m) ÷ (G × b)
= (a × m) ÷ b - (M ÷ B)λ μ μ
→ μ¦, (a × m) ÷ bμ κ²°κ³Όκ° μ μ - aμ bλ μλ‘μμ΄λ―λ‘, mμ λ°λμ bμ λ°°μ(b, 2b, 3b, ...)μ¬μΌλ§ ν¨. κ·ΈλμΌ (a × m) ÷ bμ κ²°κ³Όκ° μ μκ° λκΈ° λλ¬Έ.
→ M = G × a × m = G × a × b × n (nμ 1, 2, 3, ...)
∴ Aμ Bμ λͺ¨λ 곡배μ Mμ μ΅μκ° μ¦, μ΅μ곡배μλ G × a × b = A × B ÷ G
μ΅μ곡배μλ₯Ό ꡬνλ μ½νλ¦° μμμ μ¨λ³΄μλ©΄,
// Least Common Multiple (μ΅μ곡배μ)
fun lcm(a: Int, b: Int): Int {
return a / gcd(a, b) * b
}
μ A × B ÷ G μμ΄ μλλΌ, A ÷ G × B λ‘ μΌμκΉ? λ°λ‘ μ€λ²νλ‘μ° λ°©μ§ λλ¬Έμ΄λ€. Int × Intκ° Intμ λ²μλ₯Ό λ²μ΄λ μλ μμΌλ, λλμ μ λ¨Όμ ν΄μ Intμ λ²μλ₯Ό λ²μ΄λ νλ₯ μ μ€μΈ κ²μ΄λ€.
'κΉ¨μ κ°λ π > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 그리λ μκ³ λ¦¬μ¦ (Greedy Algorithm) (0) | 2024.10.30 |
|---|---|
| κ·Έλν - κΉμ΄ μ°μ νμ (DFS, Depth-First Search) (0) | 2024.09.23 |
| κ·Έλν - λλΉ μ°μ νμ (BFS, Breadth-First Search) (0) | 2024.09.23 |
| κ·Έλν - κ·Έλνμ μ’ λ₯μ νν (0) | 2024.01.09 |
| λμ νλ‘κ·Έλλ° (Dynamic Programming), μν₯μ(Bottom-up) λ° νν₯μ(Top-down) μ κ·Ό (0) | 2024.01.04 |