ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [Codility] BinaryGap 100점
    알고리즘 2019. 3. 14. 22:28


    문제출처 : https://app.codility.com/programmers/lessons/1-iterations/binary_gap/


    문제 요약 : 입력받은 숫자를 이진수로 변환후, 1에 1까지의 0의 개수를 각각 구한뒤 가장 큰 0의 개수를 반환해라.

    ex) 입력: 1001 출력: 2

         입력: 1010001 출력: 3




    [100점]


    입력받은 숫자를 Integer클래스로 이진수 문자열로 바꾼뒤, 숫자로된 문자열을 배열에 넣었다.


    배열에 넣은 후 반복문을 돌면서 0일때 마다 임시 변수에 카운트값을 증가시켰다.


    그다음 1을 만나면 lit에 카운트값을 담았다. 그리고 임시변수값을 초기화해버림.


    마지막에는 list에서 가장 큰 값을 반환해버렸다.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package test_java2;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
     
    public class Main {
     
        public static void main(String[] args) {
            System.out.println(solution(32));
        }
     
        public static int solution(int N) {
            String input = Integer.toBinaryString(N);
            
            String[] arr = input.split("");
            
            List list = new ArrayList();
            
            int zeroCount=0;
            
            for(int i=0 ;i<arr.length; i++) {
                if("0".equals(arr[i])) zeroCount ++;
                
                if("1".equals(arr[i])) {
                    list.add(zeroCount);
                    zeroCount = 0;
                }
            }
            return (int) Collections.max(list);
        }
    }// CALSS END
     
    cs


    댓글

Designed by Tistory.