ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Codility] BinaryGap
    Algorithm 2020. 11. 19. 01:36

    BinaryGap

    평소 알고리즘에 약한 편이라Codility에서 풀 수 있는 가장 쉬운 문제 Lesson1을 연습 삼아 풀어 본 것에 대한 기록입니다.

     

    문제

    문제는 10진수의 정수가 입력이 되면 그 10진수를 2진수로 변경했을 때, 1과 1사이의 0의 개수 중 가장 큰 수를 구하는 것입니다.

    예를 들어 1000001001 라는 2진수의 경우 1 사이의 0의 개수는 5와 2, 그중 큰 수인 5를 최종 출력하면 됩니다.

    자세한 문제는 여기를 눌러주세요.

     

    나의 풀이

    1. Integer.toBinaryString()으로 입력 N을 2진수로 변경
    2. split("")으로 String 배열로 전환
    3. String 배열을 역순으로 돌며 첫 1이 들어온 순간부터 tempResult 1씩 증가
    4. 그다음 1이 들어왔을 때, tempResult가 result 보다 크다면 result에 담아주고 tempResult를 0으로 초기화

    풀이보고서 (클릭)

     

    리뷰

    풀고나니 아쉬웠던 부분은 역순으로 진행한 점과 tempResult - 1을 억지로 넣은 느낌입니다.

    역순으로 돌린 이유는 1000 등 1로 끝나지 않는 2진수의 경우 1과 1사이를 구하지 않기 위해서 뒤가 1부터 시작할 경우에만 계산해 주기 위함이었고, tempResult - 1은 중간에 1이 들어오는 경우 그 1에대한 카운트를 하나 빼기 위함이었습니다.

     

    부끄러운 알고리즘 풀이 끝.

    'Algorithm' 카테고리의 다른 글

    [Codility] CyclicRotation  (0) 2020.11.20
    [Algorithm] 버전 비교 알고리즘 (Version Compare)  (0) 2019.07.26

    댓글

Designed by Tistory.