2019년 4월 9일 화요일

Hackerrank Day 10 Binary Numbers







알고리즘 연습 사이트
www.hackerrank.com


Day 10:Binary Numbers


어떤 10진수를 입력받아 2진수로 변환하면서, 연속된 1이 최대 몇번 나오는가 라는 문제이다.
while문으로 몫(n)이 0보다 클때까지 돌면서 나머지가 1이면 count 수를 증가시킨다.
count가 백업된 숫자(back)보다 크거나 같을 경우 back에 count를 대입한다. 
중간에 나머지가 0인 경우 count수를 0으로 세팅하여 처음부터 다시 연속된 1을 센다.
그러다가 back에 저장된 수보다 같거나 커지게 되면 그 수를 다시 저장하는 것이다.

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

int remainder = 0; //나머지
int count=0 , back = 0;
while(n > 0){
    remainder = n % 2;
    n = n / 2;
   if(remainder == 1) {
      count++;
      if(count >= back) //Max value를 저장하는 것과 비슷
          back = count;   
   }else{
    count = 0;
   }
}
System.out.println(back);


댓글 없음:

댓글 쓰기