- Published on
Codility - Binary Gap
- Author

- Name
- yceffort
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ํ๋ ๊ฒ๋ง ๊ธฐ์ตํ๋ฉด ๋ ๋ฏ.