[Java] 백준 - 1094번 막대기 (Silver V)

배똥회장·2022년 8월 5일
0
post-custom-banner

📝 문제

백준 - 1094번 막대기


📝 답안

📌 작성 코드

import java.io.*;
import java.util.*;
public class Main {	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		//만들어야 할 길이
		int X = Integer.parseInt(br.readLine());
	
		//첫 막대기 길이
		int stick = 64;

		//남아있는 막대기 길이
		ArrayList<Integer> all = new ArrayList<>();
		//all 안에 들어있는 막대기 모든 길이
		int allStick = 0;
		
		//while문으로 막대 길이와 남아있는 막대 길이가 X보다 작거나 같아질 때까지 반복
		while (stick + allStick > X) {
			//막대기를 절반으로 자르고
			stick /= 2;
			//절반으로 잘린 막대 길이와 남아있는 막대기 모든 길이의 합이 X보다 작으면
			if (stick + allStick < X) {
				//다른 절반으로 잘린 막대기는 보관
				all.add(stick);
				allStick += stick;
			}
		}
		//stick은 따로 추가해줘야하기 때문에 +1을 해줌
		System.out.println(all.size()+1);
	}
}

📌 결과


profile
어쩌면 개발자
post-custom-banner

0개의 댓글