κ°μ
λ°±μ€ λ¬Έμ νμ΄κ³Όμ μμ μ μ©νκ² μ¬μ©νλ μκ³ λ¦¬μ¦λ€μ μ νλ³λ‘ μ 리νμ¬ λΆμ λ° λ³΅μ΅νκ³ μ λ³λμ κΈλ‘ μ 리νκ² λ¨
μ μ: μμ(Prime Number)
μμλ μμ λ³΄λ€ μμ μλ€μ κ³±μΌλ‘ λ§λ€μ΄μ§ μ μλ, μ½μλ₯Ό 1κ³Ό μμ λ°μ κ°μ§μ§ λͺ»νλ μλ₯Ό λ§ν©λλ€.
μμκ° λ±μ₯νλ μμμ κ·μΉμ΄ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ, μμλ₯Ό νμ νλ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λκ° μ€μν©λλ€.
λ°©λ²1. μ½μλ²μ λ΄μμ νλμ© λλ 보며 μμμ¬λΆ νλ¨
1) 2λΆν° 1μ© λλ €κ°λ©° λλ λ³΄κ³ νλ¨νκΈ°
1μ λͺ¨λ μμμ μ½μμ΄λ―λ‘, 2λΆν° 1μ© λλ €κ°λ©° νλ³νκ³ μ νλ μ«μμ μΌμΌν λλ 보λ λ°©λ²μΌλ‘,
κ°μ₯ κ°λ¨νλ©΄μ μμ΄μ μΈ λ°©λ²μ λλ€.
// νλ
νκ³ μ νλ μ«μ: n
iκ°μ 2λΆν° nκΉμ§ 1μ© λ리며 μννλ κ³Όμ μμ μλ μμ
μ λ°λ³΅μνν©λλ€:
nκ³Ό iμ λλ¨Έμ§μ°μ° μν κ²°κ³Όκ° 0μΈμ§ νμΈνκ³ ,
λ§μ½ 0μ΄λ©΄ μμκ° μλκ²μΌλ‘ νλ¨νκ³ μμ
μ μ’
λ£ν©λλ€.
μ¬κΈ°κΉμ§ μ½λκ° μ’
λ£λμ§ μκ³ μ€λ©΄ μμμΈκ²μΌλ‘ νλ¨ν©λλ€.
- μκ°λ³΅μ‘λ: O(n)
- νΉμ΄μ¬ν
- κ°μ₯ κ°λ¨.
- μμκ° μλκ²½μ° μμμΈ κ²½μ°λ³΄λ€ λΉ λ₯΄κ² νλ¨ κ°λ₯
- μμμΌ κ²½μ° μ°μ°μκ°μ΄ κ΅μ₯ν μ€λ κ±Έλ¦Ό (=μ΅μ μ κ²½μ°)
2) νλ¨νκ³ μ νλ μ«μμ μ λ°κΉμ§λ§ νμΈνκΈ°
νλ¨νκ³ μ νλ μ«μκ° λμ€κΈ° μ κΉμ§ λͺ¨λ μ«μλ₯Ό νμΈνλ λ°©λ²μ λΉν¨μ¨μ μ λλ€.
μ¬μ€ κ·Έμ€ μ λ°μ νμΈν νμκ° μλ μ«μμ΄κΈ° λλ¬Έμ λλ€.
κ°λ Ή 30μ΄λΌλ μ«μκ° μλ€λ©΄, 30μ λλ μ μλ μ«μκ° 15μ΄μμμλ λμ¬ μ μμ΅λλ€.
μ΄μ λ κ°μ₯ μμ μμκ° 2μ΄κΈ° λλ¬Έμ λλ€.
2λ³΄λ€ μμ μλ 1λ°μ μλλ°, 1λ‘ λλ μ§ μ«μλ μκΈ° μμ μΌ κ²μ΄λ―λ‘, μ°μ°ν΄λ³΄λ μλ―Έκ° μμ΅λλ€.
// νλ
νκ³ μ νλ μ«μ: n
iκ°μ 2λΆν° **n/2κΉμ§** 1μ© λ리며 μννλ κ³Όμ μμ μλ μμ
μ λ°λ³΅μνν©λλ€:
nκ³Ό iμ λλ¨Έμ§μ°μ° μν κ²°κ³Όκ° 0μΈμ§ νμΈνκ³ ,
λ§μ½ 0μ΄λ©΄ μμκ° μλκ²μΌλ‘ νλ¨νκ³ μμ
μ μ’
λ£ν©λλ€.
μ¬κΈ°κΉμ§ μ½λκ° μ’
λ£λμ§ μκ³ μ€λ©΄ μμμΈκ²μΌλ‘ νλ¨ν©λλ€.
- μκ°λ³΅μ‘λ: O(n) (μ°μ°νμλ n/2μ΄λ, κ³μλ μκ°λ³΅μ‘λμμ 무μ)
- νΉμ΄μ¬ν
- 1λ² λ°©λ²λ³΄λ€ λΉκ΅μ μ°μ°λμ μ€μΌ μ μμ
- μ΅μ μ κ²½μ° μ°μ°μκ°μ΄ κ΅μ₯ν μ€λ κ±Έλ¦°λ€λ λ¨μ μ λ°λμ§ μμ
3) sqrt(νλ¨ν μ«μ)λ§νΌλ§ νμΈνκΈ°
μ¬μ€ μ λ°κΉμ§ νμΈνλ λ°©λ²μ‘°μ°¨λ μ°μ°λμ λ μ€μΌ μ μμ΅λλ€.
νλ¨ν μ«μμ μ½μκ° 1κ³Ό μμ μ μ μΈνκ³ μμΌλ©΄ μμμμ΅λλ€.
μ΄λ§μ λ€λ₯Έ κ΄μ μΌλ‘ λ³Έλ€λ©΄, μ½μλ₯Ό ꡬνλ κ³Όμ μ κ°λ¨νκ²νλ©΄ μμνλ¨μ λΉ λ₯΄κ² ν μ μλ€λ λ»μ λλ€.
κ°λ Ή 36μ μ½μλ₯Ό ꡬνλ€κ³ κ°μ ν΄λ³΄κ² μ΅λλ€.
36μ μ½μλ 1, 2, 3, 6, 12, 24, 36μ λλ€.
λλΆλΆμ κ²½μ° 6μ΄νμλ μΌμΌν λμ ν΄λ³΄λ©° μ½μλ₯Ό ꡬνμ§ μμΌμ€ κ²λλ€. μμμ ꡬν μ½μμ λμΉμ μ΄λ£¨κΈ° λλ¬Έμ λλ€.
6μ μ²μμ μ½μλ₯Ό μ°Ύκ³ μ νλ 36μ μ κ³±κ·Όμ λλ€. sqrt(36)μ κ²°κ³Όκ°μ΄μ£ .
λ€μ λ§ν΄, μ°λ¦¬λ νλ¨ν μ«μμ μ κ³±κ·ΌκΉμ§λ§ νμΈν΄λ μμμ¬λΆλ₯Ό νμΈν μ μμ΅λλ€.
// νλ
νκ³ μ νλ μ«μ: n
iκ°μ 2λΆν° **sqrt(n)λ³΄λ€ μ»€μ§κΈ° μ κΉμ§** 1μ© λ리며 μννλ κ³Όμ μμ μλ μμ
μ λ°λ³΅μνν©λλ€:
nκ³Ό iμ λλ¨Έμ§μ°μ° μν κ²°κ³Όκ° 0μΈμ§ νμΈνκ³ ,
λ§μ½ 0μ΄λ©΄ μμκ° μλκ²μΌλ‘ νλ¨νκ³ μμ
μ μ’
λ£ν©λλ€.
μ¬κΈ°κΉμ§ μ½λκ° μ’
λ£λμ§ μκ³ μ€λ©΄ μμμΈκ²μΌλ‘ νλ¨ν©λλ€.
- μκ°λ³΅μ‘λ: O(sqrt(n))
- νΉμ΄μ¬ν
- 1,2λ² λ°©λ²λ³΄λ€ λΉκ΅μ μ°μ°λμ ν¬κ² μ€μΌ μ μμ
λ°©λ²2. μ΄μ μ«μμ μμνλ κ²°κ³Όλ₯Ό μ μ₯νμ¬ λ€μ μ«μμ μμμ¬λΆ νλ¨
μμ λ°©λ²λ€μ νΉμ μ«μμ μμμ¬λΆλ₯Ό λ¨κ±΄μΌλ‘ νλ¨ν λ μ μ©ν μκ³ λ¦¬μ¦λ€μ΄μμ΅λλ€.
νμ§λ§ λ§μ½ μ°μλ μ¬λ¬ μλ€μ μμνλ¨μ΄ νμν μν©μ΄λΌλ©΄ μ€λ³΅λ μ°μ°κ³Όμ λ€μ΄ λ§μμ§ κ°λ₯μ±μ΄ μμ΅λλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μ°μ°κ²°κ³Όλ₯Ό μ μ₯νμ¬ μμνλ μλλ₯Ό ν₯μμν¬ μ μμ΅λλ€.
4) μμνλ₯Ό νμ©νμ¬ νλ¨νκΈ° (μλΌν μ€ν λ€μ€μ 체)
μλΌν μ€ν λ€μ€μ 체λ κ³ λ κ·Έλ¦¬μ€ μνμ μλΌν μ€ν λ€μ€κ° λ§λ€μ΄λΈ λ°©λ²μΌλ‘, 체μ κ°μ΄ μ¬μ μ μ΄λ―Έ νλ¨λ μμ리μ€νΈλ₯Ό νμ©νμ¬ μ²΄μ²λΌ μμλ₯Ό κ±Έλ¬λ΄λ λ°©λ²μ λλ€.
μμ리μ€νΈλ₯Ό λ§λ€μ΄ μ¬μ©νλ κ²μ μ₯μ μ νλ¨ν μ«μλ€μ λ²μλ₯Ό μκ³ μμ λ, νλ² νλ¨ν μμκ²°κ³Όλ₯Ό μ μ₯νμ¬ μ¬μ¬μ©νλ―λ‘ μ€λ³΅μ°μ°νμκ° μ€μ΄λλλ€.
// νλ
νκ³ μ νλ μ«μ: a1, a2, ..., an
κ°μ₯_ν°_μ«μ = ak;
μμν=booleanν λ°°μ΄(κ°μ₯_ν°_μ«μ+1); // νΈμμ 0λ²μ¨° κ°μ μ¬μ©νμ§ μμ κ²μ΄κΈ° λλ¬Έ
λ°°μ΄μ΄κΈ°ν(μμν, true) // booleanν λ°°μ΄μ λͺ¨λ trueλ‘ μ΄κΈ°ν
μμν[1] = false; // 1: μμ μλ
iλ₯Ό 2λΆν° "κ°μ₯_ν°_μ«μ"κΉμ§, 1μ© μ»€μ§λ©΄μ:
λ§μ½ μμν[i]κ° falseμ΄λ©΄:
νμν μ’
λ£ & λ€μμνλ‘ μ΄λ // = continue
jλ₯Ό 2λΆν° μμνμ¬, (i*j)κ° "κ°μ₯_ν°_μ«μ"λ³΄λ€ μκ±°λ κ°μ λμ 1μ© μ»€μ§λ©΄μ:
μμν[i*j] = false;
μμ κΈμ μ°Έκ³ νμ¬ μ‘°κΈ λ μκ°ν΄λ³΄λ©΄ μκ°λ³΅μ‘λκ° μ‘°κΈ λ μ€μ΄λλλ€.
1) μμμ¬λΆ λ³κ²½ λ°λ³΅λ¬Έμ μμλ²μ μ΅μ ν
μμμ¬λΆλ₯Ό λ°λ³΅νκΈ° μν΄ μνλλ λ΄λΆλ°λ³΅λ¬Έμ μ΅μ ν ν΄λ³΄κ² μ΅λλ€.
μμ μμ±ν΄λ μλμ½λλ₯Ό 보면, jλ₯Ό νμ 2λΆν° μμν©λλ€.
νμ§λ§ μ¬κΈ°μμ μκ°μ ν΄λ³΄λ©΄, λ§μ½ iκ° 7μΌ λ ν΄λΉ λ°λ³΅λ¬Έμ΄ μ€νμ€μ΄λΌλ©΄ μ΄λ―Έ 7*2λ iκ° 2μΌ λ μ°μ°μ΄ λμμ κ²λλ€.
λ°λΌμ ν΄λΉ λ°λ³΅λ¬Έμμ κΈ°μ‘΄μ μ²λ¦¬λ κ°μ λ€μ falseλ‘ λ°κΎΈλ μμ μ ν νμκ° μμΌλ―λ‘, jκ° iμ κ°μμ§λ 7*7μμ μμλλ©΄ κΈ°μ‘΄μ μ²λ¦¬λ κ°μ λ€μ μ²λ¦¬νλ μΌμ΄ μμ΄μ§λλ€.
2) μμ νμ λ°λ³΅λ¬Έμ λλ²μ μ΅μ ν
μ΄λ²μ “iλ₯Ό 2λΆν° “κ°μ₯ν°μ«μ”κΉμ§ 1μ© μ»€μ§λ©΄μ μν”λλ μΈλΆλ°λ³΅λ¬Έμ λνμ¬ μ΅μ ν ν΄λ³΄λ €κ³ ν©λλ€.
iκ° 1μ© μ»€μ§λ©΄μ 2λΆν° “κ°μ₯ν°μ«μ”κΉμ§ μννλλ‘ λμ΄μλ μ½λλ μμ μμλ²μ μ΅μ νλ‘ μΈν΄ i*iκ° nλ³΄λ€ μ»€μ§λ μμ λΆν°λ λμ΄μμ λ΄λΆλ°λ³΅λ¬Έμμ μ§λ¦¬κ°μ΄ λ³κ²½λμ§ μμ΅λλ€.
λ°λΌμ μ‘°κ±΄λ¬Έμ΄ ‘“κ°μ₯ν°μ«μ”κΉμ§’μλ μλμ½λλ ‘i*iκ° “κ°μ₯ν°μ«μ”λ³΄λ€ μκ±°λ κ°μ λ κΉμ§’λ‘ λ°κΎΈλ κ²μ΄ μ°μ°νμλ₯Ό μ€μΌ μ μμ΅λλ€.
1κ³Ό 2λ₯Ό ν΅ν΄ μ΅μ νλ μλΌν μ€ν λ€μ€μ 체μ μλμ½λλ λ€μκ³Ό κ°μ΅λλ€:
// νλ
νκ³ μ νλ μ«μ: a1, a2, ..., an
κ°μ₯_ν°_μ«μ = ak;
μμν=booleanν λ°°μ΄(κ°μ₯_ν°_μ«μ+1); // νΈμμ 0λ²μ¨° κ°μ μ¬μ©νμ§ μμ κ²μ΄κΈ° λλ¬Έ
λ°°μ΄μ΄κΈ°ν(μμν, true) // booleanν λ°°μ΄μ λͺ¨λ trueλ‘ μ΄κΈ°ν
μμν[1] = false; // 1: μμ μλ
iλ₯Ό 2λΆν° i*iκ° "κ°μ₯_ν°_μ«μ"λ³΄λ€ μκ±°λ κ°μ λ κΉμ§, 1μ© μ»€μ§λ©΄μ:
λ§μ½ μμν[i]κ° falseμ΄λ©΄:
νμν μ’
λ£ & λ€μμνλ‘ μ΄λ // = continue
jλ₯Ό i*iλΆν° μμνμ¬, (i*j)κ° "κ°μ₯_ν°_μ«μ"λ³΄λ€ μκ±°λ κ°μ λμ 1μ© μ»€μ§λ©΄μ:
μμν[i*j] = false;
- μκ°λ³΅μ‘λ: O(nlog(logn)) (μ΄κΈ°μ°μ°) | O(1) (ν₯νμ¬μ©)
- νΉμ΄μ¬ν
- μ΄μ μ°μ°κ²°κ³Όλ₯Ό μ μ₯νμ¬ μ¬μ¬μ© κ°λ₯
- μ΄κΈ° μ°μ°λΉμ©μ΄ μΌλΆ μμλμ§λ§, ν₯ν μ¬μ© μ O(1)λ‘ λΉ λ₯΄κ² μ κ·Ό κ°λ₯
5) μμ μ°μ°λ μμλ‘λ§ λλ λ³΄κ³ νλ¨νκΈ°(IDEA)
μΌμΌν μ°μ°νλ κ²μ λ°λ³΅μ μΈ κ³Όμ μ λ°μμν΅λλ€.
κ°λ Ή 4λ‘ λλ μ§λ μλ 2λ‘λ λλ μ§ κ²μ΄λ―λ‘, κ΅³μ΄ 2λ² μ°μ°μν¬ νμκ° μμ΅λλ€.
4λ₯Ό μ½μλ‘ κ°μ§λ μκ° 2λ₯Ό μ½μλ‘ κ°μ§μ§ λͺ»νλ κ²½μ°λ μκΈ° λλ¬Έμ λλ€.
λ€μ λ§ν΄, μμμ μμλ‘ λλ 보μμ λ μλλ μ§λ€λ©΄, κ΅³μ΄ κ·Έ λ°°μλ‘ λ€μ μ°μ°ν νμκ° μμ΅λλ€.
λ°λΌμ μμ μ°μ°λμλ μμλ€μ μ μ₯ν΄λκ³ , ν΄λΉ μμλ€λ‘λ§ λλ 보면 μ°μ°νμλ₯Ό μ€μΌ μ μμ΅λλ€.
μ΄ λ°©λ²μ μ€μ λ¬Έμ νμ΄λ₯Ό νλ©΄μ μ¨λ³Έμ μ μμ΄μ, ν₯ν κ΄λ ¨ λ¬Έμ κ° λμμ λ νλ² λ μ 리ν΄λ³΄λλ‘ νκ² μ΅λλ€.
'π [STUDY] κ°λ° > [STUDY] μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Weekly Scrum] μκ³ λ¦¬μ¦ μ€ν°λ - 4μ£Όμ°¨ (0) | 2025.02.13 |
---|---|
[Weekly Scrum] μκ³ λ¦¬μ¦ μ€ν°λ - 3μ£Όμ°¨ (0) | 2025.02.04 |
[Weekly Scrum] μκ³ λ¦¬μ¦ μ€ν°λ - 2μ£Όμ°¨ (0) | 2025.01.28 |
[Weekly Scrum] μκ³ λ¦¬μ¦ μ€ν°λ - 1μ£Όμ°¨ (0) | 2025.01.21 |
[μν] μ ν΄λ¦¬λ νΈμ λ²; μ΅λ곡μ½μλ₯Ό ꡬνλ λΉ λ₯Έ λ°©λ² (0) | 2023.01.19 |