관리 메뉴

πŸ–₯ dev-ruby

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ‹€μŒ 큰 숫자 -Javascript <μ—°μŠ΅λ¬Έμ œ> λ³Έλ¬Έ

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ‹€μŒ 큰 숫자 -Javascript <μ—°μŠ΅λ¬Έμ œ>

ruby_s 2021. 11. 20. 16:20
728x90
λ°˜μ‘ν˜•
SMALL

문제 μ„€λͺ…

μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n의 λ‹€μŒ 큰 μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 μ •μ˜ ν•©λ‹ˆλ‹€.

  • 쑰건 1. n의 λ‹€μŒ 큰 μˆ«μžλŠ” n보닀 큰 μžμ—°μˆ˜ μž…λ‹ˆλ‹€.
  • 쑰건 2. n의 λ‹€μŒ 큰 μˆ«μžμ™€ n은 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ κ°™μŠ΅λ‹ˆλ‹€.
  • 쑰건 3. n의 λ‹€μŒ 큰 μˆ«μžλŠ” 쑰건 1, 2λ₯Ό λ§Œμ‘±ν•˜λŠ” 수 쀑 κ°€μž₯ μž‘μ€ 수 μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ 78(1001110)의 λ‹€μŒ 큰 μˆ«μžλŠ” 83(1010011)μž…λ‹ˆλ‹€.

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n의 λ‹€μŒ 큰 숫자λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œ 사항

  • n은 1,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예

n result
78 83
15 23

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예#1
문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.


μž…μΆœλ ₯ 예#2
15(1111)의 λ‹€μŒ 큰 μˆ«μžλŠ” 23(10111)μž…λ‹ˆλ‹€.

 

λ‚΄κ°€ ν‘Ό 풀이

const find1 = (n) => {return (n.toString(2).match(/1/g) || []).length;}
function solution(n) {
    const n_2 = find1(n)
    let next_n_2 = 0;
    while(n_2 !== next_n_2)
        next_n_2 = find1(++n);
    return +n.toString(10);
}

 

λ‚˜λ¦„ μ •κ·œμ‹μœΌλ‘œ κ°„λ‹¨ν•˜κ²Œ ν‘Ό 것 κ°™κΈ΄ ν•œλ°,

λ­”κ°€ while문을 μ•ˆμ“°κ³  ν’€ 수 μžˆμ„ 것 같은데 μ’€ 더 생각해봐야겠닀..

 

λ‹€λ₯Έ μ‚¬λžŒ 풀이

function solution(n,a=n+1) {
    return n.toString(2).match(/1/g).length == a.toString(2).match(/1/g).length ? a : solution(n,a+1);
}

μž¬κ·€ ν™œμš© ..!

728x90
λ°˜μ‘ν˜•
LIST