λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Programming/Coding Test

[Level 2] λ‹€μŒ 큰 숫자 (Python)

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - λ‹€μŒ 큰 숫자

μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n의 λ‹€μŒ 큰 μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 μ •μ˜ ν•©λ‹ˆλ‹€. 쑰건 1. n의 λ‹€μŒ 큰 μˆ«μžλŠ” n보닀 큰 μžμ—°μˆ˜ μž…λ‹ˆλ‹€. 쑰건 2. n의 λ‹€μŒ 큰 μˆ«μžμ™€ n은 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ κ°™μŠ΅λ‹ˆ

programmers.co.kr

 

def solution(n):
    n_bin = bin(n)[2:]
    
    if len(set(n_bin)) == 1:
        return(int('10' + n_bin[1:], 2))
    
    one_cnt = n_bin.count('1')
    
    while(True):
        n += 1
        
        if bin(n)[2:].count('1') == one_cnt:
            return(n)

 

β–· n의 μ΄μ§„μˆ˜κ°€ λͺ¨λ‘ 1인 κ²½μš°μ™€ μ•„λ‹Œ 경우둜 λ‚˜λˆ„μ–΄ μ£Όμ–΄μ•Ό ν•œλ‹€.

 

β–· n의 μ΄μ§„μˆ˜κ°€ λͺ¨λ‘ 1인 κ²½μš°μ—λŠ” set ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ°Ύμ•„μ€€ λ’€, 제일 μ•žμ— '10'λ₯Ό λ°°μΉ˜ν•˜κ³ , μ΄μ§„μˆ˜μ˜ λ‚˜λ¨Έμ§€ 뢀뢄을 λΆ™μ—¬μ€€λ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ λ‹€μ‹œ int ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 10μ§„λ²•μœΌλ‘œ λ°”κΎΈμ–΄ μ€€λ‹€.

 

β–· n의 μ΄μ§„μˆ˜κ°€ λͺ¨λ‘ 0이 μ•„λ‹Œ κ²½μš°λŠ” while ν•¨μˆ˜λ₯Ό 톡해 n에 계속 1μ”© λ”ν•˜μ—¬ n의 μ΄μ§„μˆ˜μ˜ 1의 κ°œμˆ˜κ°€ κ°™μ•„μ§€λŠ” 것을 μ°Ύμ•„μ£Όλ©΄ λœλ‹€.

 

β–Ά set ν•¨μˆ˜μ— λ¬Έμžμ—΄μ΄ λ“€μ–΄μ˜€λ©΄ λ¬Έμžμ—΄μ˜ λ¬Έμžμ— λŒ€ν•œ 집합을 좜λ ₯ν•œλ‹€.

 

β–Ά count ν•¨μˆ˜λŠ” λ¬Έμžμ—΄μ— ν¬ν•¨λœ 인자의 개수λ₯Ό 좜λ ₯ν•œλ‹€.

'Programming > Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Level 2] H-Index (Python)  (0) 2020.10.05
[Level 2] μœ„μž₯ (Python)  (0) 2020.09.30
[Level 2] κ΄„ν˜Έ λ³€ν™˜ (Python)  (0) 2020.09.30
[Level 2] 삼각 λ‹¬νŒ½μ΄ (Python)  (0) 2020.09.29
[Level 2] 카펫 (Python)  (0) 2020.09.24