코딩테스트 연습 - BinaryGap

shinhyocheol·2021년 7월 15일
0
  • 문제: S라는 정수가 주어지면 이진변환하여 바이너리문자열을 구하고, 간격의 단위는 0으로 정의한다.

    이 문자열에서 가장 긴 간격을 구해본다.

    예를들어 S: 1041이라는 정수가 주어졌고, 이를 이진변환하면 10000010001이 된다.

    해당 문자에서 가장 긴 간격길이는 5가된다.

    단, 마지막문자가 0으로 끝난다면 작업 할 필요없이 간격을 0으로 하는것으로 규칙을 정한다.

  • 설명 :

    • S : 정수
  • 풀이언어 : 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);
profile
놀고싶다

0개의 댓글