app.codility.com/programmers/lessons/1-iterations/binary_gap/
Tasks
입력 받은 정수 N에 대하여 이진 간격 구하기
양의 정수 N이 입력되면 가장 긴 이진 간격의 길이를 반환한다.
N에 이진 간격이 없으면 0을 반환해야 한다.
ex)
---------------------------------------------------
숫자 9 입력시
이진 표현 1001 반환되는 값 2
---------------------------------------------------
숫자 529 입력시
이진 표현 1000010001 반환되는 값 4
---------------------------------------------------
숫자 15 입력시
이진 표현 1111 반환되는 값 0
---------------------------------------------------
숫자 32 입력시
이진 표현 100000 반환되는 값 0
Solution
public static int solution(int N) {
int answer = 0;
// 정수 N을 2진수로 변경 후 String 으로 변환
String binaryString = = Integer.toBinaryString(N);
// 1 기준으로 배열 넣기
String[] arr = binaryString.substring(binaryString.indexOf("1"), binaryString.lastIndexOf("1")).split("1");
// 생성된 배열 반복문
for (String arrStr : arr) {
// 간격 길이 비교
if ( arrStr.length() > answer ) answer = arrStr.length();
}
return answer;
}
+...
java.lang 패키지에 있는 Integer 클래스는 10 진수 값을 2진수로 바꾸고
2진수를 10진수로 바꿔주는 함수를 지원한다.
10진수 → 2진수
String : Integer.toBinaryString(int i)
Integer.toBinaryString(5); // 101
2진수 → 10진수
int : Integer.parseInt(String s, int radix)
Integer.parseInt("1010", 2); // 10
'Study > Codility' 카테고리의 다른 글
[JAVA] Codility Lesson 3(3) - Time Complexity : TapeEquilibrium (0) | 2023.04.19 |
---|---|
[JAVA] Codility Lesson 3(2) - Time Complexity : PermMissingElem (0) | 2023.03.30 |
[JAVA] Codility Lesson 3(1) - Time Complexity : FrogJmp (0) | 2023.03.29 |
[JAVA] Codility Lesson 2(2) - Arrays : OddOccurrencesInArray (0) | 2023.03.15 |
[JAVA] Codility Lesson 2(1) - Arrays : CyclicRotation (0) | 2023.03.13 |