본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

Codility - Binary Gap

avatar
yceffort
2020-06-23 · 2분
2min
2020year
KOoriginal
algorithm

1-1 Binary Gap

문제

숫자 N을 이진수로 바꿨을때, 1과 1사이에 있는 0의 개수가 가장 많이 연속해 있는 0의 개수를 구하라.

9는 이진수로 바꿀 경우 1001, 이경우 0의 최대 개수는 2.
529는 이진수로 바꿀 경우 1000010001, 이경우 0의 최대 개수는 3.
20은 이진수로 바꿀 경우 10100, 이 경우 0의 최대 개수는 1. (100은 1로 둘러 쌓여 있지 않음)
15는 이진수로 바꿀경우 1111 이므로, 0의 개수는 0개

풀이

function solution(N) {
  // 2진법으로 변환
  const binary = N.toString(2)
  // 1로 쪼갠다.
  const splitted = binary.split(1)

  // 두개 이하로 쪼개질 경우, 1이 한개 밖에 없으므로 값은 0
  if (splitted.length <= 2) {
    return 0
  } else {
    // 마지막 나누기는 의미가 없다.
    // '' 이거나 1로 막혀있지 않다면 숫자가 나올 것이므로
    splitted.pop()
    // 제일
    return splitted.reduce((p, c) => (c.length > p ? c.length : p), 0)
  }
}

해설

배열의 마지막 요소를 pop하는 것만 기억하면 될 듯.

https://app.codility.com/demo/results/training3C4SN2-EXK/

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #algorithm

    프로그래머 기초 수학 2-3 - 유리수, 무리수, 실수

    유리수, 무리수, 실수

    2020-07-29·5분
  • #algorithm

    프로그래머 기초 수학 2-2 - 기수법

    기수법

    2020-07-24·3분
  • #algorithm#mathematics

    프로그래머 기초 수학 2-1 - 정수

    정수

    2020-07-23·4분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →