-
[Codility] BinaryGapAlgorithm 2020. 11. 19. 01:36
BinaryGap
평소 알고리즘에 약한 편이라Codility에서 풀 수 있는 가장 쉬운 문제 Lesson1을 연습 삼아 풀어 본 것에 대한 기록입니다.
문제
문제는 10진수의 정수가 입력이 되면 그 10진수를 2진수로 변경했을 때, 1과 1사이의 0의 개수 중 가장 큰 수를 구하는 것입니다.
예를 들어 1000001001 라는 2진수의 경우 1 사이의 0의 개수는 5와 2, 그중 큰 수인 5를 최종 출력하면 됩니다.
자세한 문제는 여기를 눌러주세요.
나의 풀이
- Integer.toBinaryString()으로 입력 N을 2진수로 변경
- split("")으로 String 배열로 전환
- String 배열을 역순으로 돌며 첫 1이 들어온 순간부터 tempResult 1씩 증가
- 그다음 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