๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

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

๋ฟŒ์•ผ._. 2021. 1. 11. 21:06

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ1


<์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ>

๋ฌธ์ œ ์„ค๋ช…

 

0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ์–ด๋–ค ๋ฌธ์ž์—ด x์— ๋Œ€ํ•œ ์ด์ง„ ๋ณ€ํ™˜์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    1. x์˜ ๋ชจ๋“  0์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    2. x์˜ ๊ธธ์ด๋ฅผ c๋ผ๊ณ  ํ•˜๋ฉด, x๋ฅผ c๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, x = "0111010"์ด๋ผ๋ฉด, x์— ์ด์ง„ ๋ณ€ํ™˜์„ ๊ฐ€ํ•˜๋ฉด x = "0111010" -> "1111" -> "100" ์ด ๋ฉ๋‹ˆ๋‹ค.
0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. s๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ s์— ์ด์ง„ ๋ณ€ํ™˜์„ ๊ฐ€ํ–ˆ์„ ๋•Œ, ์ด์ง„ ๋ณ€ํ™˜์˜ ํšŸ์ˆ˜์™€ ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ ์ œ๊ฑฐ๋œ ๋ชจ๋“  0์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ ์‚ฌํ•ญ

 

- s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 150,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
- s์—๋Š” '1'์ด ์ตœ์†Œ ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(s):
    answer = []
    
    zero=0
    turn=0
    
    while(s!="1"):
        zero+=s.count("0") #0์˜ ๊ฐœ์ˆ˜ count
        temp=s.count("1") 
        s=format(temp,'b') # 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์ด์ง„ ๋ณ€ํ™˜
        turn+=1
    
    answer.append(turn)
    answer.append(zero)
    return answer

 ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์€ ์ด์ง„ ๋ณ€ํ™˜์˜ ํšŸ์ˆ˜์™€ ๊ทธ ๊ณผ์ •์—์„œ ์ œ๊ฑฐ๋œ 0์˜ ๊ฐœ์ˆ˜

 

 1) s๊ฐ€ 1์ด ์•„๋‹ ๋•Œ ๊ณ„์† ๋ฐ˜๋ณต

    1-1) 0์˜ ๊ฐœ์ˆ˜ count
    1-2) 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์ด์ง„ ๋ณ€ํ™˜

    1-3) ์ด์ง„ ๋ณ€ํ™˜ ํšŸ์ˆ˜ +1


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges