๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] [์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ1] [Python] Level2_์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

Dbswnstjd 2022. 10. 13. 17:06

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/70129

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

ํ’€์ด

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2๋‹จ๊ณ„ - 2018์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€1 - ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ
def solution(s):
    answer = []
    countZero = 0 # ์ œ๊ฑฐ๋œ 0์˜ ๊ฐœ์ˆ˜
    countBinary = 0 # ์ด์ง„ ๋ณ€ํ™˜ ํšŸ์ˆ˜
    while True:
        if s == '1': # s๊ฐ€ 1์ด ๋˜์—ˆ์„๋•Œ ์ค‘๋‹จ
            break
        
        countBinary += 1 # ์ด์ง„ ๋ณ€ํ™˜์„ ํ•˜์˜€์œผ๋ฏ€๋กœ +1

        countZero += s.count('0') # ์ด์ง„์ˆ˜์— ์žˆ๋Š” 0์˜ ๊ฐœ์ˆ˜๋ฅผ ์…ˆ
    
        s = s.replace('0', '') # 0์„ ์—†์• ์ฃผ๊ธฐ

        newLength = len(s) # ์ด์ง„ ๋ณ€ํ™˜๋œ ์ˆ˜์˜ ๊ธธ์ด ์ €์žฅ

        s = bin(newLength)[2:] # ์ด์ง„ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 0b~~๋กœ ๋‚˜์˜ค๋ฏ€๋กœ ์•ž์˜ 2๊ฐœ๋Š” ๋นผ๊ณ  ์Šฌ๋ผ์ด์‹ฑ 

    return [countBinary, countZero] # ์ด์ง„๋ณ€ํ™˜ํšŸ์ˆ˜, ์—†์•ค 0์˜ ๊ฐœ์ˆ˜

์กฐ๊ฑด 

1. ๋ฌธ์ž์—ด์— ์žˆ๋Š” ๋ชจ๋“  0 ์ œ๊ฑฐ

2. ์ œ๊ฑฐ ํ›„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ด์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„

3. ๋ฌธ์ž์—ด์ด 1์ด ๋˜๋ฉด ์ค‘๋‹จ

 

๋‚˜์˜ ํ’€์ด

1. ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๋ฌธ์ž์—ด์ด 1์ด ๋˜์—ˆ์„ ๋•Œ ์ค‘๋‹จ์‹œํ‚ค๋„๋ก ํ•œ๋‹ค. 

2. ๋ฐ˜๋ณต๋ฌธ์— ๋“ค์–ด์˜ค๋ฉด ์ด์ง„ ๋ณ€ํ™˜์„ ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ด์ง„ ๋ณ€ํ™˜ ํšŸ์ˆ˜ + 1

3. ๋ฌธ์ž์—ด์— ์žˆ๋Š” 0์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค ( 0์„ ์—†์•ค ๊ฐœ์ˆ˜๋ฅผ ์„ธ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

4. 0์„ ์—†์• ์ค€๋‹ค.

5. ๋ณ€ํ™˜๋œ ์ˆ˜์˜ ๊ธธ์ด ์ €์žฅ

6. bin ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ 0b~~๋กœ ๋‚˜์˜ค๋ฏ€๋กœ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์Šฌ๋ผ์ด์‹ฑ

๋ฐ˜๋ณต