๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

728x90

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

 

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

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

programmers.co.kr

 

 

function solution(s) {
    let zero = 0;
    let count = 0;
    while (s !== "1") {
        zero += s.split("1").join("").length;
        s = s.split("0").join("").length.toString(2);
        count++;
    }
    return [count, zero];
}

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ํ˜•๋ณ€ํ™˜์„ ์•ˆ์‹œํ‚ค๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋‹ค๊ฐ€

์–ด์จŒ๋“  ์นด์šดํŠธ๋ฅผ ํ•˜๋ ค๋ฉด ํ˜•๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๊ธด ํ–ˆ๋‹ค.

์ฒ˜์Œ์—” ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ํ›„ filter ๋กœ ๊ฐ’์„ ์†Ž์•˜๋‹ค๊ฐ€ ๋” ๊ฐ„๋‹จํ•œ split ์„ ์ด์šฉํ–ˆ๋‹ค. 

split ์„ ์ด์šฉํ•ด ํ•„์š”์—†๋Š” ๋ฌธ์ž๋ฅผ ์†Ž์•„์คฌ๋‹ค.

0์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” zero ์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด s ์—์„œ 1์„ ์ œ๊ฑฐ, join ํ•ด์ค€ ํ›„์˜ length ๋ฅผ ๊ณ„์† ๋”ํ•ด์คฌ๋‹ค.

์ฃผ์–ด์ง„ ๋ฌธ์ž s ๋Š” 0์„ ์ œ๊ฑฐํ•œ ํ›„, join ์œผ๋กœ ํ•ฉ์นœ๋‹ค์Œ ๊ทธ length ๋ฅผ toString(2) ๋ฅผ ์ด์šฉํ•ด ์ด์ง„ ๋ณ€ํ™˜์„ ํ•ด์คฌ๋‹ค.

 

toString(์ด ์•ˆ์—๋Š” 2-32 ์ง„์ˆ˜ ๊นŒ์ง€ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.)

์ˆซ์ž ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์ˆซ์ž ์ž์ฒด๋ฅผ ๋„ฃ์„ ๊ฒฝ์šฐ, 

(125).toString(2);  ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ค˜์•ผ ๋ณ€ํ™˜์ด ๋œ๋‹ค. 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

 

Number.prototype.toString() - JavaScript | MDN

toString() ๋ฉ”์„œ๋“œ๋Š” ํŠน์ •ํ•œ Number ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

developer.mozilla.org

 

 

while ๋ฌธ์ด ํ•œ๋ฐ”ํ€ด ๋Œ ๋•Œ count ๋„ +1 ์”ฉ ํ•ด์ค€๋‹ค. 

 

๊ทธ๋Ÿผ ์ตœ์ข…์ ์œผ๋กœ s ๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ ํ›„ [count, zero] ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•