https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
문제
- N은 십진수로 전달되고, 이를 이진수로 변경하여 1과 1사이에 있는 0의 최대 갯수를 구하는 문제
- 예시
number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3
-> N = 9, 이진수 : 1001, binary gap : 2 / N = 529, 이진수 1000010001, binary gap : 4, 3( 큰값인 4가 binary gap이 된다 )
The number 20 has binary representation 10100 and contains one binary gap of length 1. The number 15 has binary representation 1111 and has no binary gaps
-> N = 20, 이진수 : 10100, binary gap : 1 / N = 15, 이진수 : 1111, binary gap : 0
- binary gap이 존재시 gap중 최대값을 return, 존재하지 않으면 0을 return해라
풀이
- cnt - 임시 gap / maxgap - cnt중 최대 값
- 이진수로 변경하는 Integer.toBinaryString( int ) 활용
- forEach문을 통해 char 값을 비교하여 '0'일 경우 cnt+1, '1'일 경우 cnt와 maxgap의 값을 비교하여 maxgap 값 갱신 or cnt값 초기화
소스코드
class Solution {
public int solution(int N) {
// write your code in Java SE 8
String binaryStr = Integer.toBinaryString(N);
// binaryStr은 첫번째 자리가 무조건 1
int maxgap = 0;
int cnt = 0;
for(char s: binaryStr.toCharArray()){
if( '0' == s ){
cnt++;
}else{
if( maxgap < cnt ){
maxgap = cnt;
}
cnt = 0;
}
}
return maxgap;
}
}
'코딜리티 문제풀이' 카테고리의 다른 글
Codility Lesson 03 - TapeEquilibrium( JAVA ) (0) | 2022.03.16 |
---|---|
Codility Lesson 03 - PermMissingElem( JAVA ) (0) | 2022.03.14 |
Codility Lesson 03 - FrogJmp( JAVA ) (0) | 2022.03.13 |
Codility Lesson 02 - OddOccurrencesInArray( JAVA ) (0) | 2022.03.13 |
Codility Lesson 02 - CyclicRotation( JAVA ) (0) | 2022.03.11 |