Algorithm/ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - μ˜ˆμƒ λŒ€μ§„ν‘œ

giraffe_ 2022. 6. 21. 09:03

https://programmers.co.kr/learn/courses/30/lessons/12985

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ˜ˆμƒ λŒ€μ§„ν‘œ

β–³β–³ κ²Œμž„λŒ€νšŒκ°€ κ°œμ΅œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 λŒ€νšŒλŠ” Nλͺ…이 μ°Έκ°€ν•˜κ³ , ν† λ„ˆλ¨ΌνŠΈ ν˜•μ‹μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. Nλͺ…μ˜ μ°Έκ°€μžλŠ” 각각 1λΆ€ν„° Nλ²ˆμ„ μ°¨λ‘€λŒ€λ‘œ λ°°μ •λ°›μŠ΅λ‹ˆλ‹€. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N

programmers.co.kr

 

 

 

 

 

κ°„λ‹¨ν•΄λ³΄μ΄λŠ”λ° 은근 κΉŒλ‹€λ‘œμ› λ‹€. λͺ¨λ“  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό ν†΅κ³Όν•˜μ§€ λͺ»ν•΄ μ‚½μ§ˆμ„ μ’€ ν–ˆλ‹€...

 

n은 μ΄μš©ν•  ν•„μš”μ—†μ΄, a와 bλ₯Ό λ‚˜λˆ—μ…ˆ 연산을 μ΄μš©ν•΄μ„œ 관계λ₯Ό νŒŒμ•…ν•΄μ„œ ν’€λ©΄ λœλ‹€.

같은 λŒ€μ§„μ—μ„œ λΆ™μœΌλ €λ©΄, (μžμ‹ μ˜ 수 + 1) / 2 κ°€ κ°™μ•„μ•Ό ν•œλ‹€. 

 

μ’…λ£Œμ‘°κ±΄μ€ a와 bκ°€ 같이 λ¬Άμ—¬μžˆμ„ λ•Œλ₯Ό μ €λ ‡κ²Œ ν‘œν˜„ν–ˆλ‹€.

 

 

 

μ½”λ“œ

class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 1;

        while(true) {
            if((b % 2 == 0 && a == b - 1) || (a % 2 == 0 && b == a - 1)) {
                break;
            }
            
            a = (a + 1) / 2;
            b = (b + 1) / 2;
            
            answer++;
        }

        return answer;
    }
}