최대 1 분 소요



https://www.acmicpc.net/problem/1094



🔍 문제 풀이

문제 도식화

assets/images/2025/1094.jpg



💻 코드

전체 코드

그리디

현재 가지고 있는 가장 큰 막대기(64cm)부터 시작하여 목표 길이(X)를 만드는 데 필요한 만큼 사용

막대기 길이를 동적으로 절반씩 줄여가며 계산

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, cnt = 0;

        while(x != 0){
            if(stick > x) stick = stick / 2;
            else {
                x -= stick;
                cnt++;
            }
        }
        System.out.println(cnt);

    }
}


배열 사용

미리 배열에 저장해둔 막대기 길이들을 순서대로 확인

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int x = Integer.parseInt(br.readLine());

        int[] arr = {64, 32, 16, 8, 4, 2, 1};
        int idx = 0, cnt = 0;
        while(x > 0){
            if(x >= arr[idx]){
                cnt ++;
                x -= arr[idx];
            }else idx ++;
        }

        System.out.println(cnt);

    }
}

카테고리:

업데이트:

댓글남기기