본문 바로가기
Algorithm

JAVA / Codility Lesson 1 / BinaryGap

by with chu 2021. 4. 20.
728x90

코딜리티 코딩테스트 레슨1


Codility

 

1. Iterations lesson - Learn to Code - Codility

Find longest sequence of zeros in binary representation of an integer.

app.codility.com

 

<문제 요약>

이진수에서 1 두 개로 0이 감싸져 있을 때 binary gap이라하고, 그 0의 개수를 binary gap의 길이라고 한다.
ex) 529 는 이진수로 1000010001이고 두 개의 binary gap이 있고 각각의 길이는 4개, 3개이다.
주어진 자연수 중 가장 긴 binary gap의 길이를 반납하는 함수를 작성한다.

 

 

<문제 풀이>

1. java.lang패키지에 있는 Integer클래스에서 2진수를 10진수로 바꿔주는 toBinaryString()함수를 사용한다.
2. 문자열을 한 글자씩 char타입의 배열에 넣는 toCharArray() 함수를 사용해 배열에 담는다.
3. for문을 돌려서 0인 경우를 세어준다.
4. 입력 된 숫자 중 가장 큰 숫자를 반환하는 Math.max()함수를 사용하여 가장 긴 binary gap의 길이를 반환한다.
  

class Solution {
    public int solution(int N) {
        String binaryString = Integer.toBinaryString(N); 
        char[] binaryArray = binaryString.toCharArray();
        int countBinaryGap = 0; //0의 개수
        int maxBinaryGap = 0; //가장 긴 BinaryGap의 길이

        for(char binary : binaryArray){
            if (binary == '0'){
                countBinaryGap++; //0을 만나면 0의 개수를 추가
            }else{
              maxBinaryGap = Math.max(countBinaryGap, maxBinaryGap);
              countBinaryGap = 0;  //1을 만나면 0의 개수를 초기화
            }
        }
        return maxBinaryGap;
    }
}
 
728x90

댓글