ν”„μ—” 곡뢀/🫧 μ•Œκ³ λ¦¬μ¦˜ 곡뢀

[μ•Œκ³ λ¦¬μ¦˜ || ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 이진 λ³€ν™˜ λ°˜λ³΅ν•˜κΈ°

λ˜μžπŸ‹ 2023. 6. 2. 09:54
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
λ°˜μ‘ν˜•