문제: S라는 정수가 주어지면 이진변환하여 바이너리문자열을 구하고, 간격의 단위는 0으로 정의한다.
이 문자열에서 가장 긴 간격을 구해본다.
예를들어 S: 1041이라는 정수가 주어졌고, 이를 이진변환하면 10000010001이 된다.
해당 문자에서 가장 긴 간격길이는 5가된다.
단, 마지막문자가 0으로 끝난다면 작업 할 필요없이 간격을 0으로 하는것으로 규칙을 정한다.
설명 :
풀이언어 : Java
// 주어질 정수
int S = 1, 2, 3, ....1041, 1042....;
// 결과
int result = 0;
// 정수 이진변환
String binary = Integer.toBinaryString(N);
// 마지막이 0이라면 수행 X
if (binary.charAt(binary.length() - 1) != '0') {
// "1"를 분기점으로 리스트 생성
String[] list = binary.split("1");
//
for (int i=0; i<list.length; i++) {
if(list[i].length() > result) {
result = list[i].length();
}
}
}
System.out.println(result);