Study/Coding Test

[JS] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - λ‹€μŒ 큰 숫자

Jieunny 2023. 11. 24. 17:05

πŸ“Œ 문제

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

- 쑰건 1. n의 λ‹€μŒ 큰 μˆ«μžλŠ” n보닀 큰 μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

- 쑰건 2. n의 λ‹€μŒ 큰 μˆ«μžμ™€ n은 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ κ°™μŠ΅λ‹ˆλ‹€.

- 쑰건 3. n의 λ‹€μŒ 큰 μˆ«μžλŠ” 쑰건 1, 2λ₯Ό λ§Œμ‘±ν•˜λŠ” 수 쀑 κ°€μž₯ μž‘μ€ 수 μž…λ‹ˆλ‹€.

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

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

 

πŸ’‘ 아이디어 

i보닀 큰 μˆ˜λΆ€ν„° μ œν•œμ‚¬ν•­μ— κ±Έλ €μžˆλŠ” μˆ˜κΉŒμ§€ forλ¬Έ λŒλ©΄μ„œ 찾으면 λ˜λŠ” 문제

 

✏️ 풀이

function solution(n) {
    var answer = 0;
    let nBinary = n.toString(2);
    let nOneCnt = 0;
    for(let i=0; i<nBinary.length; i++) {
        if(nBinary[i] === '1') nOneCnt++;
    }
    for(let i=n + 1; i<1000000; i++) {
        let iBinary = i.toString(2);
        let jOneCnt = 0;
        for(let j=0; j<iBinary.length; j++) {
        if(iBinary[j] === '1') jOneCnt++;
        }
        if(nOneCnt === jOneCnt) {
            answer = i;
            break;
        }
    }
    return answer;
}