Algorithm - CodeKata #16 πŸ“Œ

Sangho MoonΒ·2020λ…„ 9μ›” 29일
0

Algorithm

λͺ©λ‘ 보기
9/37
post-thumbnail
post-custom-banner

1. Question

μ–‘μˆ˜ N을 μ΄μ§„λ²•μœΌλ‘œ 바꿨을 λ•Œ, μ—°μ†μœΌλ‘œ μ΄μ–΄μ§€λŠ” 0 μ€‘μ—μ„œ κ°€μž₯ 큰 값을 returnν•΄ μ£Όμ„Έμš”.

  • μ΄μ–΄μ§€λŠ” 0은 1κ³Ό 1사이에 μžˆλŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • 1κ³Ό 1사이에 μžˆλŠ” 0을 binary gap 이라고 ν•˜κ² μŠ΅λ‹ˆλ‹€.
input: 9
output: 2
μ„€λͺ…: 9의 μ΄μ§„μˆ˜λŠ” 1001 μž…λ‹ˆλ‹€. 
1κ³Ό 1사이에 μžˆλŠ” 0은 2 μ΄λ―€λ‘œ, 2λ₯Ό return
input: 529
output: 4
μ„€λͺ…: 529의 μ΄μ§„μˆ˜λŠ” 1000010001 μž…λ‹ˆλ‹€. 
binary gap은 4와 3 λ‘κ°œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
이 쀑 큰 값은 4μ΄λ―€λ‘œ 4λ₯Ό return
input: 20
output: 1
μ„€λͺ…: 20의 μ΄μ§„μˆ˜λŠ” 10100 μž…λ‹ˆλ‹€. 
1κ³Ό 1사이에 μžˆλŠ” μ—°μ†λœ 0의 μˆ˜λŠ” 1 λΏμž…λ‹ˆλ‹€.
(뒀에 μžˆλŠ” 0은 1사이에 μžˆλŠ” 것이 μ•„λ‹ˆλ―€λ‘œ)
input: 15
output: 0
μ„€λͺ…: 15의 μ΄μ§„μˆ˜λŠ” 1111 μž…λ‹ˆλ‹€. 
binary gap이 μ—†μœΌλ―€λ‘œ 0을 return
input: 32
output: 0
μ„€λͺ…: 32의 μ΄μ§„μˆ˜λŠ” 100000 μž…λ‹ˆλ‹€. 
binary gap이 μ—†μœΌλ―€λ‘œ 0을 return

2. Answer

const solution = N => {
  let binary = N.toString(2);
  const binaryArr = binary.split('1');
  let binaryGap = 0;

  for (let i = 0; i < binaryArr.length - 1; i++) {
    if (binaryArr[i].length === 0) {
      continue;
    } else {
      binaryGap = Math.max(binaryGap, binaryArr[i].length);
    }
  }
  
  return binaryGap;
}

console.log(solution(123));

Ref.
https://medium.com/akiakma/code-kata-14-binary-gap-48160e0ad6e

profile
Front-end developer
post-custom-banner

0개의 λŒ“κΈ€