250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ˜ˆμƒ λŒ€μ§„ν‘œ) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (μ˜ˆμƒ λŒ€μ§„ν‘œ)

γ…… γ…œ γ…” γ…‡ 2022. 12. 22. 05:55
728x90

1. 문제 μ„€λͺ…

β–³β–³ κ²Œμž„λŒ€νšŒκ°€ κ°œμ΅œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 λŒ€νšŒλŠ” Nλͺ…이 μ°Έκ°€ν•˜κ³ , ν† λ„ˆλ¨ΌνŠΈ ν˜•μ‹μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. Nλͺ…μ˜ μ°Έκ°€μžλŠ” 각각 1λΆ€ν„° Nλ²ˆμ„ μ°¨λ‘€λŒ€λ‘œ λ°°μ •λ°›μŠ΅λ‹ˆλ‹€. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 μ°Έκ°€μžλΌλ¦¬ κ²Œμž„μ„ μ§„ν–‰ν•©λ‹ˆλ‹€. 각 κ²Œμž„μ—μ„œ 이긴 μ‚¬λžŒμ€ λ‹€μŒ λΌμš΄λ“œμ— μ§„μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ, λ‹€μŒ λΌμš΄λ“œμ— μ§„μΆœν•  μ°Έκ°€μžμ˜ λ²ˆν˜ΈλŠ” λ‹€μ‹œ 1λ²ˆλΆ€ν„° N/2λ²ˆμ„ μ°¨λ‘€λŒ€λ‘œ λ°°μ •λ°›μŠ΅λ‹ˆλ‹€. λ§Œμ•½ 1번↔2번 끼리 κ²¨λ£¨λŠ” κ²Œμž„μ—μ„œ 2번이 μŠΉλ¦¬ν–ˆλ‹€λ©΄ λ‹€μŒ λΌμš΄λ“œμ—μ„œ 1λ²ˆμ„ λΆ€μ—¬λ°›κ³ , 3번↔4λ²ˆμ—μ„œ κ²¨λ£¨λŠ” κ²Œμž„μ—μ„œ 3번이 μŠΉλ¦¬ν–ˆλ‹€λ©΄ λ‹€μŒ λΌμš΄λ“œμ—μ„œ 2λ²ˆμ„ λΆ€μ—¬λ°›κ²Œ λ©λ‹ˆλ‹€. κ²Œμž„μ€ μ΅œμ’… ν•œ λͺ…이 남을 λ•ŒκΉŒμ§€ μ§„ν–‰λ©λ‹ˆλ‹€.

μ΄λ•Œ, 처음 λΌμš΄λ“œμ—μ„œ Aλ²ˆμ„ 가진 μ°Έκ°€μžλŠ” 경쟁자둜 μƒκ°ν•˜λŠ” B번 μ°Έκ°€μžμ™€ λͺ‡ 번째 λΌμš΄λ“œμ—μ„œ λ§Œλ‚˜λŠ”μ§€ κΆκΈˆν•΄μ‘ŒμŠ΅λ‹ˆλ‹€. κ²Œμž„ μ°Έκ°€μž 수 N, μ°Έκ°€μž 번호 A, 경쟁자 번호 Bκ°€ ν•¨μˆ˜ solution의 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 처음 λΌμš΄λ“œμ—μ„œ Aλ²ˆμ„ 가진 μ°Έκ°€μžλŠ” 경쟁자둜 μƒκ°ν•˜λŠ” B번 μ°Έκ°€μžμ™€ λͺ‡ 번째 λΌμš΄λ“œμ—μ„œ λ§Œλ‚˜λŠ”μ§€ return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”. λ‹¨, A번 μ°Έκ°€μžμ™€ B번 μ°Έκ°€μžλŠ” μ„œλ‘œ λΆ™κ²Œ 되기 μ „κΉŒμ§€ 항상 이긴닀고 κ°€μ •ν•©λ‹ˆλ‹€.

 

 

 

 

2. μ œν•œ 사항

  • N : 21 μ΄μƒ 220 μ΄ν•˜μΈ μžμ—°μˆ˜ (2의 μ§€μˆ˜ 승으둜 μ£Όμ–΄μ§€λ―€λ‘œ λΆ€μ „μŠΉμ€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)
  • A, B : N μ΄ν•˜μΈ μžμ—°μˆ˜ (단, A ≠ B μž…λ‹ˆλ‹€.)

 

 

 

 

 

3. λ‚΄ 풀이

def solution(n,a,b):
    answer = 0
    while a != b:
        answer += 1
        a = (a+1) // 2
        b = (b+1) // 2
        
    return answer

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이

def solution(n,a,b):
    return ((a-1)^(b-1)).bit_length()
728x90
Comments