이번 문제는 64길이의 막대기를 나눠가면서 조건에 해당하는 막대기 길이까지 반복하는 문제이다. 기능 순서는 문제에서 제공하는 방법 그대로 적용하였고, Stack구조와 전체 합을 따로 생각하여 문제를 해결하였다.
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int temp = sc.nextInt();
Stack<Integer> stack = new Stack<>();
stack.add(64);
int all_sum = 64;
while (all_sum > temp) {
int last = stack.pop() / 2;
stack.add(last);
all_sum -= last;
if (all_sum >= temp) {
continue;
} else {
all_sum += last;
stack.add(last);
}
}
System.out.println(stack.size());
}
}