Codility: BinaryGap

이원희·2020년 11월 20일
0

📝 PS

목록 보기
5/65
post-thumbnail

오늘은 오랜만에 코딜리티 문제를 풀었다.
코딜리티에 가면 코스가 있고, 코스를 통해서 차근차근 문제풀이를 할 수 있다.

코딜리티 쓰면서 늘 좋았던거는 푼 문제에 대해 상세한 정보를 제공한다는 것이다...

대강 이렇게?ㅋㅋㅋㅋㅋ
그리고 밑에는 hidden test case도 보여줘서 좋다...

코딜리티를 3년 전였나? 그때 처음 봤었는데 그때는 시간/공간 복잡도에 대해서 신경 안쓰고 코딩/PS할 때라서 코딜리티에서 빠꾸 엄청 먹었다...ㅋㅋㅋㅋㅋ

이젠 복잡도에 대해서도 생각하면서 문제를 풀기도 하고,
뭔가 프로그래머스나 백준 문제만 풀다보니 기본적인 부분들을 잊어버리는 기분이라서 코딜리티를 좀 다시 시작해볼까 한다.
(프로그래머스나 백준 문제도 좋지만 뭔가 문제가 너무 화려하다고 해야할까..?ㅋㅋㅋ)

각설하고 문제풀이해야지

문제는 간략하게 주어진 수 N을 이진수로 변환했다.
이진수는 문자열 형태로 저장해두고,
문자열을 앞에서부터 탐색하면서 1이 나타날때마다 gap을 구했다.
그리고 문자열의 index 0은 무조건 1이다.

JAVA

class Solution {
    public int solution(int N) {
        String binary = "";
        while(N != 0) {
            binary = (N % 2) + binary;
            N /= 2;
        }
        
        int answer = 0;
        int target = 0;
        
        for(int i = 1; i < binary.length(); i++) {
            if(binary.charAt(i) == '1') {
                int diff = i - target - 1;
                if(answer < diff) {
                    answer = diff;
                }
                target = i;
            }
        }
        
        return answer;
    }
}

0개의 댓글