본문 바로가기

백준 문제풀기/JAVA

[백준 1094 JAVA 자바] 막대기

길이가 64인 막대를

절반씩 줄이고 더하면서

특정 길이를 맞춘다

 

라는 뜻은

 

특정 길이 X를 2진수로 표현하시오

라고 들립니다

 

예를들어 

23을 2진수로 표현하면

16 + 4 + 2 + 1 = 23

10111 입니다

1의 개수가 4개 = 사용한 막대기의 수 4개

가 됩니다

 

1. 입력받은 숫자를 2진수로 바꾸면서

2. 더해줍니다

3. 출력합니다

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner scan= new Scanner(System.in);
		
		int n = scan.nextInt();
		int sum = 0;
		
		for(int i=6; i>=0; i--) {
			int nn = 1;
			for(int j=0; j<i; j++) {
				nn *= 2;
			}			
			sum += n/nn;
			n = n%nn;
		}
		System.out.println(sum);		
    }
}

 

sum += n/nn; 으로 더해준 이후

n = n%nn; 을 통해

막대기를 재조정하는 과정을 넣었습니다