728x90
코딜리티 코딩테스트 레슨1
<문제 요약>
이진수에서 1 두 개로 0이 감싸져 있을 때 binary gap이라하고, 그 0의 개수를 binary gap의 길이라고 한다.
ex) 529 는 이진수로 1000010001이고 두 개의 binary gap이 있고 각각의 길이는 4개, 3개이다.
주어진 자연수 중 가장 긴 binary gap의 길이를 반납하는 함수를 작성한다.
<문제 풀이>
1. java.lang패키지에 있는 Integer클래스에서 2진수를 10진수로 바꿔주는 toBinaryString()함수를 사용한다.
2. 문자열을 한 글자씩 char타입의 배열에 넣는 toCharArray() 함수를 사용해 배열에 담는다.
3. for문을 돌려서 0인 경우를 세어준다.
4. 입력 된 숫자 중 가장 큰 숫자를 반환하는 Math.max()함수를 사용하여 가장 긴 binary gap의 길이를 반환한다.
class Solution {
public int solution(int N) {
String binaryString = Integer.toBinaryString(N);
char[] binaryArray = binaryString.toCharArray();
int countBinaryGap = 0; //0의 개수
int maxBinaryGap = 0; //가장 긴 BinaryGap의 길이
for(char binary : binaryArray){
if (binary == '0'){
countBinaryGap++; //0을 만나면 0의 개수를 추가
}else{
maxBinaryGap = Math.max(countBinaryGap, maxBinaryGap);
countBinaryGap = 0; //1을 만나면 0의 개수를 초기화
}
}
return maxBinaryGap;
}
}
728x90
'Algorithm' 카테고리의 다른 글
JAVA / Codility Lesson 4 / FrogRiverOne (0) | 2021.05.11 |
---|---|
JAVA / Codility Lesson 3 / PermMissingElem (0) | 2021.05.07 |
JAVA / Codility Lesson 2 / Arrays (0) | 2021.04.23 |
C++ / 프로그래머스 / 네트워크 / 문제 풀이 (0) | 2021.04.14 |
C++ / 프로그래머스 / 타겟 넘버 / 문제 풀이 (0) | 2021.04.12 |
댓글