Algorithm๐Ÿงถ | ๋‹ค์Œ ํฐ ์ˆซ์ž(2์ง„์ˆ˜)

saneeeeeeee_Yaยท2021๋…„ 3์›” 16์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
2/11
post-thumbnail

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

๋ฌธ์ œ ์„ค๋ช…
์ž์—ฐ์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ฑด 1. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” n๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.
์กฐ๊ฑด 2. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž์™€ n์€ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ 1์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์กฐ๊ฑด 3. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” ์กฐ๊ฑด 1, 2๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด์„œ 78(1001110)์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” 83(1010011)์ž…๋‹ˆ๋‹ค.

์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ
n์€ 1,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

nresult
7883
1523

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ#1

๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ#2

15(1111)์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” 23(10111)์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด

def solution(n):
    bin_number = bin(n)[2:]
    bin_ = "0b1" + bin_number # ์˜ˆ์‹œ๋กœ 2์ง„์ˆ˜ 11001 >> 111001 
    for i in range(n+1, int(bin_, 2)+1): # 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฒ”์œ„ ์„ค์ • 
        if bin(i)[2:].count("1") == bin_number.count("1"): # 1์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด
            return i  # ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ return
            break

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

๋ฌดํ•œ Loop๋ฅผ ์‚ฌ์šฉ

def nextBigNumber(n, count = 0):
    return n if bin(n).count("1") is count else nextBigNumber(n+1, bin(n).count("1") if count is 0 else count)

์ง„์ˆ˜ ๋ณ€ํ™˜ ํ•จ์ˆ˜

2์ง„์ˆ˜ : bin() / 0b
8์ง„์ˆ˜ : oct() / 0o
16์ง„์ˆ˜ : hex() / 0x
10์ง„์ˆ˜ : int('๋ณ€ํ™˜ํ•  ์ˆซ์ž','x ์ง„์ˆ˜)

format()์œผ๋กœ ์ง„์ˆ˜ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค

format('๋ณ€ํ™˜ํ•  ์ˆซ์ž', '์ง„์ˆ˜ ๊ฐ’')

์ง„์ˆ˜ ๊ฐ’ : 2(b), 8(o), 10(d), 16(x)
์ง„์ˆ˜ ๊ฐ’ ์•ž์— #๋ฅผ ๋ถ™์ด๋ฉด ์ ‘๋‘์–ด ํฌํ•จ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

"{0:d}, {0:b}, {0:o}, {0:x}".format(77)

>>> 77, 1001101, 115, 4d 
profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

0๊ฐœ์˜ ๋Œ“๊ธ€