[ 2023-04-17 ๐Ÿฆ†TIL ]

Burkeyยท2023๋…„ 4์›” 17์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
71/157

LV.2 ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

๋ฌธ์ œ ๋งํฌ

def de_zero(s): # ์ด์ง„์ˆ˜ ๊ฐ’์— '0'์„ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜
    count = start = 0
    end = len(s) - 1
    half = end // 2
    for i in range(half + 1): 
	# ๋ฌธ์ž์—ด ๊ธธ์ด์˜ ๋ฐ˜๋งŒ ๋ฐ˜๋ณตํ•˜์—ฌ ๋๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด ๋น„๊ตํ•˜์—ฌ '1'์˜ ๊ฐฏ์ˆ˜ ์นด์šดํŠธ
        if s[i] == '1':
            count += 1
        if i != (end - i):
            if s[end - i] == '1':
                count += 1
    return count, (len(s) - count) # 1์˜ ๊ฐฏ์ˆ˜์™€ ์‚ญ์ œ๋œ 0์˜ ๊ฐฏ์ˆ˜ ๋ฆฌํ„ด


def make_two(n): # ์ด์ง„์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜
    s = ''
    num = n
    while num >= 1: # num์˜ ๊ฐ’์ด 1์ด ๋˜์—ˆ์„ ๋•Œ์—๋„ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ด์ง„๊ฐ’์— ๋„ฃ์–ด์•ผ ๋จ
        s = str(num % 2) + s # ๋‚˜๋จธ์ง€ ๊ฐ’์€ ๋ฌธ์ž์—ด ์•ž์ชฝ์— ๋ถ™์–ด์•ผ ํ•œ๋‹ค.
        num = num // 2
    return s


def solution(s):
    result = [0, 0] # 1์ด ๋  ๋•Œ ๊นŒ์ง€์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜์™€ ์‚ญ์ œ๋œ 0์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด
    check = 0
    while s != '1':
        check, d_check = de_zero(s)
        result[0] += 1
        result[1] += d_check
        s = make_two(check)
    return result


print(solution("110010101001"))
print(solution("01110"))
print(solution("1111111"))
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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