Post

🐹 9. Math & Logic puzzles

06. μˆ˜ν•™ 및 논리 퍼즐

[ μ†Œμˆ˜ ]

λͺ¨λ“  μžμ—°μˆ˜λŠ” μ†Œμˆ˜μ˜ 곱으둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€λŠ” κ·œμΉ™μ΄ μžˆλ‹€.

\[84=2^2* 3^1*5^0*7^1*11^0*13^0*17^0* \cdots\]

μœ„μ˜ μˆ˜μ‹μ—μ„œ λ§Žμ€ μ†Œμˆ˜μ˜ μ§€μˆ˜ 뢀뢄이 0이닀.

κ°€λΆ„μ„±(divisibility)

μœ„μ— μ–ΈκΈ‰ν•œ κ·œμΉ™μ— λ”°λ₯΄λ©΄ μ–΄λ–€ 수 x둜 yλ₯Ό λ‚˜λˆŒ 수 있으렀면 xλ₯Ό μ†Œμˆ˜μ˜ 곱으둜 λΆ„ν• ν•˜μ˜€μ„ λ•Œ λ‚˜μ—΄λ˜λŠ” λͺ¨λ“  μ†Œμˆ˜λŠ” yλ₯Ό μ†Œμˆ˜μ˜ 곱으둜 λΆ„ν• ν•˜μ˜€μ„ λ•Œ λ‚˜μ—΄λ˜λŠ” λͺ¨λ“  μ†Œμˆ˜μ˜ 뢀뢄집합이어야 ν•œλ‹€.

$x=2^{j0}3^{j1}5^{j2}7^{j3}11^{j4}* \cdots$ 이고

$y=2^{k0}3^{k1}5^{k2}7^{k3}11^{k4}* \cdots$ 일 λ•Œ

xκ°€ y둜 λ‚˜λˆ„μ–΄ 떨어지면 $i, j_i \ge k_i$λ₯Ό λ§Œμ‘±ν•œλ‹€.

즉, x/yλ₯Ό λ§Œμ‘±ν•˜λ €λ©΄ λͺ¨λ“  i에 λŒ€ν•΄μ„œ $j_i \ge k_i$λ₯Ό λ§Œμ‘±ν•΄μ•Ό ν•œλ‹€. λ”°λΌμ„œ μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

\[gcd(x, y) = 2^{min(j0, k0)}*3^{min(j1, k1)}*5^{min(j2, k2)}* \cdots\]

x와 y의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

\[lcm(x, y) = 2^{max(j0, k0)}*3^{max(j1, k1)}*5^{max(j2, k2)}* \cdots\]

gcd*lcm을 ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

$gcdlcm = 2^{min(j0, k0)}2^{max(j0, k0)}3^{min(j1, k1)}3^{max(j1, k1)}*\cdots$

$=2^{min(j0,k0)+max(j0,k0)} * 3^{min(j1,k1)+max(j1,k1)}*\cdots$

$=2^{j0+k0}3^{j1+k1}\cdots$

$=2^{j0}2^{k0}3^{j1}3^{k1}\cdots$

$=xy$

μ†Œμˆ˜νŒλ³„

  • κ°€μž₯ λ‹¨μˆœν•œ 방법 : 2μ—μ„œ n-1κΉŒμ§€ 루프λ₯Ό 돌며 λ‚˜λˆ„μ–΄μ§€λŠ” 경우 확인
1
2
3
4
5
6
7
8
9
10
11
boolean primeNaive(int n) {
    if (n < 2) {
        return false;
    }
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

μœ„ μ½”λ“œλ₯Ό 살짝 κ°œμ„ ν•΄ 보면 루프λ₯Ό n이 μ•„λ‹Œ n의 μ œκ³±κ·ΌκΉŒμ§€λ§Œ 돌면 λœλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
boolean primeNaive(int n) {
    if (n < 2) {
        return false;
    }
    int sqrt = (int) Math.sqrt(n);
    for (int i = 2; i < sqrt; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

$\sqrt{n}$κΉŒμ§€λ§Œ 검사해보면 μΆ©λΆ„ν•˜λ‹€. μ™œλƒν•˜λ©΄ n을 λ‚˜λˆ„λŠ” λͺ¨λ“  숫자 aλŠ” 그에 λŒ€ν•œ 보수 b(a*b=n)이가 λ°˜λ“œμ‹œ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 만일 $a > \sqrt{n}$이라면 $b< \sqrt{n}$이닀($\sqrt{n}^2 =n$μ΄λ―€λ‘œ). λ”°λΌμ„œ n이 μ†Œμˆ˜μΈμ§€ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ aκΉŒμ§€ 검사할 ν•„μš”κ°€ μ—†λ‹€. bμ—μ„œ 이미 κ²€μ‚¬ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

μ†Œμˆ˜ λͺ©λ‘ λ§Œλ“€κΈ°: μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체

μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ μ²΄λŠ” μ†Œμˆ˜ λͺ©λ‘μ„ λ§Œλ“œλŠ” ꡉμž₯히 효율적인 방법이닀. 이 μ•Œκ³ λ¦¬μ¦˜μ€ μ†Œμˆ˜κ°€ μ•„λ‹Œ μˆ˜λ“€μ„ λ°˜λ“œμ‹œ λ‹€λ₯Έ μ†Œμˆ˜λ‘œ λ‚˜λˆ„μ–΄μ§„λ‹€λŠ” 사싀에 κΈ°λ°˜ν•˜μ—¬ λ™μž‘ν•œλ‹€.

처음 주어진 λ¦¬μŠ€νŠΈλŠ” 1λΆ€ν„° maxκΉŒμ§€μ˜ λͺ¨λ“  수둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

  1. 2둜 λ‚˜λˆ„μ–΄μ§€λŠ” λͺ¨λ“  수λ₯Ό λ¦¬μŠ€νŠΈμ—μ„œ μ—†μ•€λ‹€.
  2. κ·Έ ν›„ λ‹€μŒ μ†Œμˆ˜, 즉 아직 μ§€μ›Œμ§€μ§€ μ•Šμ€ 수 쀑 κ°€μž₯ μž‘μ€ 수λ₯Ό μ°ΎλŠ”λ‹€.
  3. κ·Έ 수둜 λ‚˜λˆ„μ–΄μ§€λŠ” λͺ¨λ“  수λ₯Ό λ¦¬μŠ€νŠΈμ—μ„œ μ œκ±°ν•œλ‹€.

μ΄λŸ°μ‹μœΌλ‘œ 2, 3, 5, 7, 11 λ“±μ˜ μ†Œμˆ˜λ‘œ λ‚˜λ‰˜λŠ” λͺ¨λ“  μˆ˜λ“€μ„ λ¦¬μŠ€νŠΈμ—μ„œ μ‚­μ œν•œλ‹€. 그러고 λ‚˜λ©΄ 2μ—μ„œ maxκΉŒμ§€μ˜ ꡬ간 내에 μžˆλŠ” λͺ¨λ“  μ†Œμˆ˜λ“€μ˜ λ¦¬μŠ€νŠΈκ°€ λ§Œλ“€μ–΄μ§„λ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
boolean[] sieveOfEratosthenes(int max) {
    boolean[] flags = new boolean[max+1];
    int count = 0;

    init(flags); //0κ³Ό 1번 인덱슀λ₯Ό μ œμ™Έν•œ λͺ¨λ“  μ›μ†Œκ°’μ„ true둜 μ΄ˆκΈ°ν™”
    int prime = 2;

    while (prime <= Math.sqrt(max)) {
        /* prime의 λ°°μˆ˜λ“€μ„ μ§€μ›Œλ‚˜κ°„λ‹€. */
        crossOff(flags, prime);

        /* κ·Έλ‹€μŒ true둜 μ„ΈνŒ…λœ 인덱슀λ₯Ό μ°ΎλŠ”λ‹€. */
        prime = getNextPrime(flags, prime);
    }
    return flags;
}

void crossOff(boolean[] flags, int prime) {
    /* prime의 λ°°μˆ˜λ“€μ„ μ œκ±°ν•΄λ‚˜κ°„λ‹€. k < prime인 k에 λŒ€ν•œ k * prime은
        * 이전 λ£¨ν”„μ—μ„œ 이미 μ œκ±°λ˜μ—ˆμ„ κ²ƒμ΄λ―€λ‘œ prime * primeλΆ€ν„° μ‹œμž‘ν•œλ‹€. */
    for (int i = prime * prime; i < flags.length; i += prime) {
        flags[i] = false;
    }
}

int getNextPrime(boolean[] flags, int prime) {
    int next = prime + 1;
    while (next < flags.length && !flags[next]) {
        next++;
    }
    return next;
}

λͺ‡ 가지 κ°œμ„ μ˜ 여지가 남아 μžˆλ‹€. κ°„λ‹¨ν•˜κ²ŒλŠ” 배열에 ν™€μˆ˜λ§Œ μ €μž₯ν•˜λŠ” 방법이 μžˆλŠ”λ°, 이 방법을 μ΄μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬ 곡간을 반으둜 쀄일 수 μžˆλ‹€.

[ ν™•λ₯  ]

두 사건 A와 Bλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ‹€μŒμ˜ λ²€ λ‹€μ΄μ–΄κ·Έλž¨μ„ 보자. 두 원이 μ μœ ν•˜κ³  μžˆλŠ” μ˜μ—­μ€ 각각의 μƒλŒ€μ  ν™•λ₯ μ„ λ‚˜νƒ€λ‚΄λŠ” 것이고, κ²ΉμΉ˜λŠ” 뢀뢄은 {A and B}의 사건을 λ‚˜νƒ€λ‚Έλ‹€.

$A\cap B$의 ν™•λ₯ 

A에 λ–¨μ–΄μ§ˆ ν™•λ₯ κ³Ό A와 Bκ°€ κ²ΉμΉ˜λŠ” λΆ€λΆ„μ˜ λΉ„μœ¨λ„ μ•Œκ³  μžˆλ‹€λ©΄(A에 속해 μžˆμœΌλ©΄μ„œ B에도 μ†ν•΄μžˆμ„ ν™•λ₯ ), κ·Έ ν™•λ₯ μ€ λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

\[P(A \cap B)=P(B|A)P(A)\]

예λ₯Όλ“€μ–΄, 1λΆ€ν„° 10κΉŒμ§€μ˜ 수 쀑 ν•˜λ‚˜λ₯Ό λ½‘λŠ”λ‹€ ν•˜μž. 5보닀 μž‘κ±°λ‚˜ κ°™μœΌλ©΄μ„œ λ™μ‹œμ— 짝수인 수λ₯Ό 뽑을 ν™•λ₯ μ€ λͺ‡ 인가? 1~5κΉŒμ§€μ˜ 수λ₯Ό 뽑을 ν™•λ₯ μ€ 50%이고, 1~5μ€‘μ—μ„œ 짝수λ₯Ό 뽑을 ν™•λ₯ μ€ 40%λ‹€. λ”°λΌμ„œ 두 κ²½μš°μ— λͺ¨λ‘ 속할 ν™•λ₯ μ€ λ‹€μŒκ³Ό κ°™λ‹€.

$P(x=짝수\cap x<=5)$

$=P(x=짝수 \cap x<=5)P(x<=5)$

$=(2/5)*(1/2)$

$=1/5$

$P(A \cap B)=P(BA)P(A)=P(AB)P(B)$ μ΄λ―€λ‘œ B에 μ†ν•˜λ©΄μ„œ A에도 속할 ν™•λ₯ μ€ λ‹€μŒκ³Ό 같이 λ°˜λŒ€λ‘œ ν‘œν˜„ν•  μˆ˜λ„ μžˆλ‹€.
\[P(A|B)=P(B|A)P(A)/P(B)\]

μœ„ μˆ˜μ‹μ„ 베이즈 정리(Bayes’ Theorem)라고 λΆ€λ₯Έλ‹€.

$A \cup B$의 ν™•λ₯ 

λ‹€νŠΈκ°€ A ν˜Ήμ€ B에 λ–¨μ–΄μ§ˆ ν™•λ₯ μ„ μƒκ°ν•˜μž. 각 μ˜μ—­μ— λ–¨μ–΄μ§ˆ ν™•λ₯ μ€ μ•Œκ³  있고, κ²ΉμΉ˜λŠ” 뢀뢄에 λ–¨μ–΄μ§ˆ ν™•λ₯ λ„ μ•Œκ³  μžˆλ‹€λ©΄, A ν˜Ήμ€ B에 λ–¨μ–΄μ§ˆ ν™•λ₯ μ€ λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

\[P(A\cup B)=P(A)+P(B)-P(A\cap B)\]

예λ₯Ό λ“€μ–΄, μš°λ¦¬κ°€ 1~10κΉŒμ§€μ˜ 수 κ°€μš΄λ° ν•˜λ‚˜λ₯Ό κ³ λ₯Έλ‹€κ³  μƒκ°ν•΄λ³΄μž. 짝수λ₯Ό κ³ λ₯Ό ν™•λ₯ κ³Ό 1~5κΉŒμ§€μ˜ 수 μ€‘μ—μ„œ ν•˜λ‚˜λ₯Ό 뽑을 ν™•λ₯ μ€? 짝수λ₯Ό 뽑을 ν™•λ₯ μ€ 50%이고, 1~5κΉŒμ§€μ˜ 수λ₯Ό 뽑을 ν™•λ₯  λ˜ν•œ 50%이닀. 두 κ²½μš°μ— λͺ¨λ‘ 속할 ν™•λ₯ μ€ 20%이닀. λ”°λΌμ„œ 두 경우 쀑 ν•˜λ‚˜μ— 속할 ν™•λ₯ μ€ λ‹€μŒκ³Ό κ°™λ‹€.

$P(x=짝수 \cup x <=5)$

$=P(x=짝수)+P(x<=5)-P(x=짝수\cap x<=5)$

$=1/2+1/2-1/5$

$=4/5$

μ—¬κΈ°μ„œ 독립사건과 μƒν˜Έ 배타적인 μ‚¬κ±΄μ˜ ν™•λ₯ μ„ κ΅¬ν•˜λŠ” 특수 κ·œμΉ™λ“€μ„ μ‰½κ²Œ 얻을 수 μžˆλ‹€.

독립성

A와 Bκ°€ 독립사건(ν•œ μ‚¬κ±΄μ˜ λ°œμƒκ³Ό λ‹€λ₯Έ μ‚¬κ±΄μ˜ λ°œμƒ 사이에 μ•„λ¬΄λŸ° 관계가 μ—†λŠ” 경우)이라면, Aκ°€ B에 μ•„λ¬΄λŸ° 영ν–₯을 λΌμΉ˜μ§€ μ•ŠμœΌλ―€λ‘œ, $P(BA)=P(B)$κ°€ 되고 λ”°λΌμ„œ $P(A \cap B)=P(A)P(B)$κ°€ λœλ‹€.

μƒν˜Έ 배타성(mutual exclusivity)

A와 Bκ°€ μƒν˜Έ 배타적(ν•œ 사건이 μΌμ–΄λ‚œ 경우 λ‹€λ₯Έ 사건은 λ°œμƒν•  수 μ—†λŠ” 경우)이라면, $P(A \cap B)=0$이 λ˜λ―€λ‘œ $P(A \cup B)$λ₯Ό 계산할 λ•Œ $P(A \cap B)$ 항은 μ œκ±°ν•΄λ„ λœλ‹€. λ”°λΌμ„œ $P(A \cup B)=P(A)+P(B)$κ°€ λœλ‹€.

독립과 μƒν˜Έ λ°°νƒ€μ˜ κ°œλ…μ„ 많이 ν˜Όλ™ν•œλ‹€. 두 μ‚¬κ±΄μ˜ ν™•λ₯ μ΄ μ „λΆ€ 0보닀 큰 κ²½μš°μ— 이 두 사건이 λ…λ¦½μ μ΄λ©΄μ„œ μƒν˜Έ 배타적인 것은 λΆˆκ°€λŠ₯ν•˜λ‹€.

β†’ μƒν˜Έ 배타성은 ν•œ 사건이 λ°œμƒν•˜λ©΄ λ‹€λ₯Έ 사건이 λ°œμƒν•  수 μ—†λ‹€λŠ” 관계가 μ‘΄μž¬ν•˜μ§€λ§Œ 독립성은 ν•œ μ‚¬κ±΄μ˜ λ°œμƒ μ—¬λΆ€κ°€ λ‹€λ₯Έ 사건에 μ•„λ¬΄λŸ° 영ν–₯도 λ―ΈμΉ˜μ§€ μ•Šμ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

κ·ΈλŸ¬λ―€λ‘œ 두 μ‚¬κ±΄μ˜ ν™•λ₯ μ΄ μ „λΆ€ 0보닀 클 κ²½μš°μ—”, μƒν˜Έ 배타성과 독립성을 λ™μ‹œμ— λ§Œμ‘±μ‹œν‚¬ μˆ˜λŠ” μ—†λ‹€.

두 사건 쀑 ν•˜λ‚˜μ˜ ν™•λ₯ μ΄ 0이라면(그런 사건이 μΌμ–΄λ‚˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜λ‹€λ©΄), 두 사건은 λ…λ¦½μ μ΄λ©΄μ„œ μƒν˜Έ 배타적이닀. 곡식을 μ μš©ν•΄λ³΄λ©΄ 증λͺ… κ°€λŠ₯ν•˜λ‹€.

[ μž…μ„ 열라 ]

수수께끼 같은 문제λ₯Ό λ§Œλ‚˜λ©΄ λ‹Ήν™©ν•˜μ§€ 말자. μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ, 면접관듀이 μ›ν•˜λŠ” 것은 문제λ₯Ό μ–΄λ–»κ²Œ κ³΅λž΅ν•΄ λ‚˜κ°€λŠ” 지 λ³΄λŠ” 것이닀. 문제λ₯Ό μ–΄λ–»κ²Œ κ³΅λž΅ν•΄ λ‚˜κ°€λŠ”μ§€ λ©΄μ ‘κ΄€λ“€μ—κ²Œ λ³΄μ—¬μ£Όμž

[ κ·œμΉ™κ³Ό νŒ¨ν„΄μ„ 찾으라 ]

λ§Žμ€ κ²½μš°μ—, 문제λ₯Ό ν’€λ‹€κ°€ λ°œκ²¬ν•˜λŠ” β€˜κ·œμΉ™β€™μ΄λ‚˜ νŒ¨ν„΄μ€ λ°˜λ“œμ‹œ μ μ–΄λ‘λŠ” 것이 μ’‹λ‹€.

Q. 끈이 두 개 μžˆλ‹€. 각 λˆμ„ νƒœμš°λŠ” 데 μ •ν™•νžˆ ν•œ μ‹œκ°„μ΄ κ±Έλ¦°λ‹€. 이 두 λˆμ„ μ‚¬μš©ν•΄ 15뢄을 재렀면 μ–΄λ–»κ²Œ ν•΄μ•Ό λ˜κ² λŠ”κ°€? 이 끈의 λ°€λ„λŠ” κ· μΌν•˜μ§€ μ•Šμ•„μ„œ, 절반의 길이λ₯Ό νƒœμš°λŠ” 데 λ“œλŠ” μ‹œκ°„μ΄ μ •ν™•νžˆ 30λΆ„μ΄λΌλŠ” 보μž₯이 μ—†λ‹€.

μš°μ„  ν•œ μ‹œκ°„μ„ μž¬λŠ” 방법, 두 μ‹œκ°„μ„ μž¬λŠ” 방법은 λ°”λ‘œ μ•Œ 수 μžˆλ‹€. 끈 ν•˜λ‚˜λ₯Ό λ‹€ νƒœμš΄ λ’€ λ‹€μŒ λˆμ„ νƒœμš°λ©΄ λœλ‹€. 이 사싀을 일반적인 κ·œμΉ™μœΌλ‘œ λ§Œλ“€μ–΄ 보자.

이 λˆμ„ κ°€μš΄λ°, ν˜Ήμ€ 끝이 μ•„λ‹Œ μ–΄λ”˜κ°€μ—μ„œλΆ€ν„° νƒœμš°λŠ” 것은 그닀지 도움이 λ˜μ§€ μ•ŠλŠ”λ‹€. μ™œλƒν•˜λ©΄ λΆˆμ„ 뢙인 λΆ€λΆ„λΆ€ν„° μ–‘μͺ½μœΌλ‘œ νƒ€λ“€μ–΄κ°ˆν…λ°, 끈이 λ‹€ νƒ€λŠ” 데 μ‹œκ°„μ΄ μ–Όλ§ˆλ‚˜ 걸릴지 μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

ν•˜μ§€λ§Œ λ™μ‹œμ— μ–‘μͺ½ 끝에 λΆˆμ„ 뢙일 μˆ˜λŠ” μžˆλ‹€. 그러면 μ •ν™•νžˆ μ‚Όμ‹­ λΆ„ 뒀에 λˆμ€ λ‹€ 타버린닀.

이제 끈 ν•˜λ‚˜λ‘œ 30뢄을 잴 수 μžˆλ‹€λŠ” 것은 μ•Œμ•˜λ‹€. λ”°λΌμ„œ 첫 번째 λˆμ€ μ–‘μͺ½ 끝에 λΆˆμ„ 뢙이고 두 번째 λˆμ€ ν•œ μͺ½ 끝에 λΆˆμ„ 뢙인닀면 두 번째 λˆμ—μ„œ 30뢄을 νƒœμš΄ κ²°κ³Όλ₯Ό μ•Œ 수 μžˆλ‹€.

이제 κ·œμΉ™λ“€μ„ μ‘°ν•©ν•΄ 보자. μ „λΆ€ νƒœμš°λŠ” 데 ν•œ μ‹œκ°„ κ±Έλ¦¬λŠ” 2번 λˆμ„ 30λΆ„ κ±Έλ¦¬λŠ” 끈으둜 λ°”κΏ€ 수 μžˆλ‹€. κ·Έλ‹€μŒ 2번 끈의 μ–‘μͺ½μ— λΆˆμ„ λΆ™μ—¬ 버리면(κ·œμΉ™ 2) 2번 λˆμ€ 15λΆ„ 뒀에 μ „λΆ€ 타버린닀. λ‹€μŒ μˆœμ„œλŒ€λ‘œ μ§„ν–‰ν•œλ‹€.

  1. 1번 λˆμ€ μ–‘μͺ½μ— λΆˆμ„ 뢙이고, 2번 λˆμ€ ν•œμͺ½μ—λ§Œ λΆˆμ„ 뢙인닀.
  2. 1번 끈이 λ‹€ 타듀어가면 30뢄이 μ§€λ‚œ 것이닀. λ”°λΌμ„œ 2번 끈이 λ‹€ 타기 μœ„ν•΄ 남은 μ‹œκ°„μ€ 30뢄이닀.
  3. κ·Έ μ‹œμ μ—, 2번 끈의 λ‹€λ₯Έ μͺ½μ—λ„ λΆˆμ„ 뢙인닀.
  4. 그러면 μ •ν™•νžˆ 15λΆ„ 뒀에, 2번 λˆλ„ μ™„μ „νžˆ λ‹€ 타버릴 것이닀.

λ°œκ²¬ν•œ β€˜κ·œμΉ™β€™μ„ λ‚˜μ—΄ν•˜λŠ” 과정을 톡해, λ¬Έμ œν’€μ΄ 과정이 훨씬 μ‰¬μ›Œμ‘Œλ‹€.

[ μ΅œμ•…μ˜ κ²½μš°λŠ”? ]

수수께끼 μ’…λ₯˜μ˜ 문제 쀑 λ§Žμ€ μˆ˜κ°€ μ΅œμ•…μ˜ 경우λ₯Ό μ΅œμ†Œν™”ν•˜λŠ” 것과 연관이 μžˆλ‹€. μ–΄λ–€ 행동을 μ΅œμ†Œν™”ν•˜λŠ” 문제일 μˆ˜λ„ 있고, 지정됫 횟수 μ•ˆμ— μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” 문제일 μˆ˜λ„ μžˆλ‹€.

그럴 λ•ŒλŠ” μ΅œμ•…μ˜ 상황을 β€˜κ· ν˜• λ§žμΆ”λ„λ‘β€™ν•˜λ©΄ 도움이 λœλ‹€. λ‹€μ‹œ 말해, 초기의 μ–΄λ–€ 결정을 톡해 μ΅œμ•…μ˜ κ²½μš°κ°€ ν•œ μͺ½ λ°©ν–₯으둜 쏠리면, κ·Έ 결정을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ λ‚˜λˆ  μ΅œμ•…μ˜ κ²½μš°κ°€ κ· ν˜• μž‘νžˆλ„λ‘ ν•  수 μžˆλ‹€.

Q. 곡이 아홉 개 μžˆλ‹€. 이 κ°€μš΄λ° μ—¬λŸ κ°œλŠ” λ¬΄κ²Œκ°€ κ°™κ³ , ν•˜λ‚˜λŠ” μ’€ 더 무겁닀. μ €μšΈμ΄ ν•˜λ‚˜ μ£Όμ–΄μ§€λŠ”λ°, 이 μ €μšΈλ‘œλŠ” μ™Όμͺ½μ— λ‘” 곡듀이 λ¬΄κ±°μš΄μ§€, μ•„λ‹ˆλ©΄ 였λ₯Έμͺ½μ— λ‘” 곡듀이 λ¬΄κ±°μš΄μ§€ 밖에 μ•Œμ•„λ‚Ό μˆ˜κ°€ μ—†λ‹€. 이 μ €μšΈμ„ λ”± 두 번만 μ‚¬μš©ν•΄μ„œ κ°€μž₯ 무거운 곡을 μ°Ύμ•„ 내라.

λ¨Όμ € λ– μ˜¬λ¦΄ 수 μžˆλŠ” 접근법은, 아홉 번째 곡은 제쳐 λ‘” 채, λ‚˜λ¨Έμ§€ 곡을 λ„€ κ°œμ”© 두 그룹으둜 λ‚˜λˆ„λŠ” 것이닀. λ§Œμ•½ 이 두 그룹의 λ¬΄κ²Œκ°€ κ°™λ‹€λ©΄, 제쳐 λ’€λ˜ 곡이 κ°€μž₯ 무거운 곡이닀. 그게 μ•„λ‹ˆλΌλ©΄ 더 무거운 그룹을 택해 λ°˜λ³΅ν•œλ‹€. 그런데 μ΄λ ‡κ²Œ ν•˜λ©΄ μ΅œμ•…μ˜ 경우 μ €μšΈμ„ μ„Έ 번 μ‚¬μš©ν•΄μ•Ό ν•˜λ―€λ‘œ λ‚­νŒ¨λ‹€.

이것이 β€˜μ΅œμ•…μ˜ κ²½μš°β€™κ°€ κ· ν˜• μž‘νžˆμ§€ μ•Šμ€ 사둀닀. 제쳐 λ‘” 곡이 무거운 λ†ˆμΈμ§€ μ•Œμ•„λ‚΄λŠ” λ°μ—λŠ” ν•œ 번이면 μ‘±ν•˜μ§€λ§Œ 남은 κ³΅λ“€μ—μ„œ 무거운 곡을 μ°Ύμ•„λ‚΄λŠ” λ°μ—λŠ” μ„Έ 번이 κ±Έλ¦°λ‹€. 만일 μš°λ¦¬κ°€ μ²˜μŒμ— 제쳐 λ†“λŠ” 곡의 개수λ₯Ό 늘렀 μž‘μ•„ μΌμ’…μ˜ νŽ˜λ„ν‹°λ₯Ό 주게 되면, λ‹€λ₯Έ 그룹에 μ£Όμ–΄μ§€λŠ” 뢀담을 μ’€ 쀄일 수 μžˆλ‹€. 이것이 λ°”λ‘œ β€˜μ΅œμ•…μ˜ 경우 κ· ν˜•μ„ κ°€μ Έλ‹€ μ£ΌλŠ”β€™ λ°©λ²•μ˜ 사둀닀.

  1. 곡듀을 μ„Έ κ°œμ”© μ„Έ 그룹으둜 λ‚˜λˆ  보면, μ €μšΈμ„ ν•œ 번만 μ‚¬μš©ν•΄μ„œ μ–΄λ–€ 그룹에 무거운 곡이 μžˆλŠ”μ§€ μ•Œμ•„λ‚Ό 수 μžˆλ‹€. N개의 곡이 주어지고 N이 3으둜 λ‚˜λˆŒ 수 μžˆλŠ” 값이면, μ €μšΈμ„ ν•œ 번 μ¨μ„œ 무거운 곡이 μ†ν•œ κ·Έλ£Ή(N/3 크기)을 μ•Œμ•„λ‚Ό 수 μžˆλ‹€.
  2. 남은 μ„Έ 개의 곡을 같은 λ°©λ²•μœΌλ‘œ 달아 보면 λœλ‹€. 곡 ν•˜λ‚˜λŠ” 제쳐 놓고, 남은 두 개의 곡을 μ €μšΈ μ–‘μͺ½μ— ν•˜λ‚˜μ”© 올렀 λ†“λŠ”λ‹€. μ €μšΈμ΄ κΈ°μš΄λ‹€λ©΄, 기운 μͺ½μ˜ 곡이 무거운 λ†ˆμ΄λ‹€. μ•„λ‹ˆλΌλ©΄, 제쳐 놓은 곡이 무거운 λ†ˆμ΄λ‹€.
This post is licensed under CC BY 4.0 by the author.