ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

문제

 

2089번: -2μ§„μˆ˜

-2진법은 λΆ€ν˜Έ μ—†λŠ” 2μ§„μˆ˜λ‘œ ν‘œν˜„μ΄ λœλ‹€. 2μ§„λ²•μ—μ„œλŠ” 20, 21, 22, 23이 ν‘œν˜„ λ˜μ§€λ§Œ -2μ§„λ²•μ—μ„œλŠ” (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 ν‘œν˜„ν•œλ‹€. 10μ§„μˆ˜λ‘œ 1λΆ€ν„° ν‘œν˜„ν•˜μžλ©΄ 1, 110, 111, 100, 101, 11010, 110

www.acmicpc.net

 

문제 풀이

 μ²˜μŒμ—λŠ” μ–΄λ–»κ²Œ ꡬ해야 ν•˜λ‚˜ 고민을 ν–ˆλŠ”λ°, κ°€λ§Œνžˆ 생각해 보면 2μ§„μˆ˜λ₯Ό κ³„μ‚°ν•˜λ“―μ΄ λ™μΌν•˜κ²Œ κ³„μ‚°ν•˜λ©΄ λœλ‹€. 문제의 μ˜ˆμ‹œμΈ -13의 경우 λ‹€μŒκ³Ό 같이 계산 λœλ‹€.

 

μ½”λ“œ

if __name__ == '__main__':
    num = int(input())
    binary = ''

    if not num:
        print('0')
        exit()
    else:
        while num:
            if num % -2:
                binary = '1' + binary
                num = num // -2 + 1
            else:
                binary = '0' + binary
                num = num // -2

    print(binary)
728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€