๐Ÿงฉ Algorithm/[Programmers] Level 2

[Programmers] L2. ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ (Python)

devCloud 2024. 11. 9. 14:17
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด ๋ฐฉ๋ฒ•

2์ง„๋ฒ• ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•

 

1๏ธโƒฃ format ํ•จ์ˆ˜ ์ด์šฉ

n = 5
binary_str = format(n, 'b')  # ๊ฒฐ๊ณผ: '101'

 

2๏ธโƒฃ bin() ํ•จ์ˆ˜ ์‚ฌ์šฉ

n = 5
binary_str = bin(n)  # ๊ฒฐ๊ณผ: '0b101'

 

3๏ธโƒฃ f-string์„ ์‚ฌ์šฉํ•œ ํฌ๋งทํŒ…

n = 5
binary_str = f"{n:b}"  # ๊ฒฐ๊ณผ: '101'

 

Solution

def solution(s):
    zero, num, cnt = 0, 0, 0  # 0์˜ ๊ฐœ์ˆ˜, 2์ง„๋ฒ• ๊ธธ์ด, ๋ณ€ํ™˜ ํšŸ์ˆ˜

    while True:
        cnt += 1  # ๋ณ€ํ™˜ ํšŸ์ˆ˜ ์ฆ๊ฐ€
        for i in s:  
            if i == '1':  # 1 ์ด๋ฉด ๊ธธ์ด ์นด์šดํŠธ
                num += 1
            else:  # 0 ์ด๋ฉด 0 ๊ฐœ์ˆ˜ ์นด์šดํŠธ
                zero += 1
        if num == 1:  # 1์ด ๋  ๋•Œ ์ข…๋ฃŒ
            break
        else:  
            s = format(num, 'b')  # 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋‹ค์‹œ ๋‹ด๊ธฐ
            num = 0  # ์ดˆ๊ธฐํ™”

    return [cnt, zero]

 

 

๊ฐœ์„ ํ•  ์ 

์ด ์ฝ”๋“œ์—์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณ€์ˆ˜ num์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋‹ค์‹œ for ๋ฃจํ”„์—์„œ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ, Python์˜ count ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด 0๊ณผ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์„ธ๋ฉด ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋œ๋‹ค. ๋˜, ์กฐ๊ฑด์„ num == 1๋กœ ์ฒดํฌํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 1์ธ์ง€ ์ฒดํฌํ•˜๋Š” ๊ฒƒ๋„ ๋ช…ํ™•ํ•˜๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐœ์„ ๋œ ์ฝ”๋“œ

def solution(s):
    zero, cnt = 0, 0  # 0์˜ ๊ฐœ์ˆ˜, ๋ณ€ํ™˜ ํšŸ์ˆ˜

    while s != '1':
        cnt += 1
        zero += s.count('0')  # 0์˜ ๊ฐœ์ˆ˜ ์ถ”๊ฐ€
        s = bin(len(s.replace('0', '')))[2:]  # 0์„ ์ œ๊ฑฐํ•œ ๊ธธ์ด๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜

    return [cnt, zero]

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๋ฌธ์ œ์˜€๋‹ค. ๋‹ค๋งŒ ์„ฑ๋Šฅ์ด ํšจ์œจ์ ์ด์ง€ ๋ชปํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ์ ์ด ์•„์‰ฝ๋‹ค. ์ˆœ์ˆ˜ ๊ตฌํ˜„๋„ ์ข‹์ง€๋งŒ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜๋„๋ก ํ•˜์ž.

 

remove() ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • s = "110010101001" -> s.remove("0") ์‚ฌ์šฉ ๋ถˆ๊ฐ€
    • AttributeError: 'str' object has no attribute 'remove'
  • answer.remove('0') -> ์ค‘๋ณต๋œ ์š”์†Œ๊ฐ€ ์žˆ์–ด๋„ ํ•˜๋‚˜๋งŒ ์ œ๊ฑฐ๋จ

728x90