알고리즘 연습 사이트
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);
댓글 없음:
댓글 쓰기