https://www.acmicpc.net/problem/1094
문제
- 길이가 64cm인 막대를 가지고 있음.
- 첫째 줄에 X (1 <= X <= 64) 입력.
- 주어진 막대기를 절반으로만 자르면서 Xcm가 되도록 만들 때의 붙여진 막대기의 개수 출력
최종 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
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());
br.close();
Stack<Integer> stack = new Stack<Integer>();
int stick = 64;
int count = 0;
while(X!=0) {
if(stick>X){
stick/=2;
if(stick<X){
stack.push(stick);
}
} else{
X-=stick;
if(!stack.isEmpty()){
stick=stack.pop();
}
count++;
}
}
System.out.println(count);
}
}
'백준 문제 풀이 > 백준 (JAVA)' 카테고리의 다른 글
JAVA 백준 1244 스위치 켜고 끄기 (0) | 2024.07.09 |
---|---|
JAVA 백준 1092 배 (그리디, 정렬) - 미완 (0) | 2024.07.08 |
JAVA 백준 1032 명령 프롬프트 (문자열) (0) | 2024.07.06 |
JAVA 백준 1051 숫자 정사각형 (브루트 포스) (0) | 2024.07.06 |
JAVA 백준 1003 피보나치 함수 (0) | 2024.07.04 |