https://www.acmicpc.net/problem/1094
1094번: 막대기
지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대
www.acmicpc.net
막대기라는 문제 java로 풀이하겠습니다.
이 문제는 길이가 64cm인 막대를 사용하여 길이가 Xcm인 막대를 만들기 위해 필요한 최소 막대 개수를 계산하는 문제입니다.
저는 아래와 같이 풀이하였습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 입력값으로 막대 길이 x를 받음
int x = scanner.nextInt();
// 막대 길이를 나타내는 배열
int[] sticks = {64, 32, 16, 8, 4, 2, 1};
// 필요한 막대 개수를 나타내는 변수
int count = 0;
// 각 막대 길이에 대해서 반복
for (int i = 0; i < sticks.length; i++) {
// 현재 막대 길이가 x 이상이면 사용 가능
if (x >= sticks[i]) {
count++; // 막대 개수 증가
x -= sticks[i]; // 사용한 막대 길이만큼 x에서 빼기
}
// x가 0이 되면 더 이상의 막대가 필요하지 않으므로 반복 종료
if (x == 0) {
break;
}
}
// 필요한 막대 개수 출력
System.out.println(count);
scanner.close();
}
}
이 코드는 주어진 길이 x를 만들기 위해 필요한 막대 개수를 계산하는 방법입니다.
배열 sticks에는 가능한 막대의 길이가 큰 순서로 나열되어 있습니다. 그리고 for 루프를 통해 주어진 길이 x를 만들기 위해 사용할 수 있는 가장 큰 막대부터 차례로 사용하면서 필요한 막대의 개수를 계산합니다.
- 입력값으로 길이 x를 받습니다.
- sticks 배열에는 가능한 막대의 길이가 큰 순서로 나열되어 있습니다.
- for 루프를 통해 sticks 배열을 순회하면서 현재 막대 길이가 x 이상이면 사용 가능합니다.
- 사용 가능한 막대일 경우, 필요한 막대의 개수를 증가시키고, 사용한 막대 길이만큼 x에서 빼줍니다.
- x가 0이 되면 더 이상의 막대가 필요하지 않으므로 반복을 종료합니다.
- 필요한 막대의 개수를 출력합니다.
이러한 방식으로 입력값 x를 만들기 위해 필요한 막대의 최소 개수를 계산합니다.
이견이 있으시면 자유롭게 댓글 남겨주세요

'Algorithm > CodingTest' 카테고리의 다른 글
[Programmers] 2024 KAKAO WINTER INTERNSHIP 가장 많이 받은 선물 (Java) (0) | 2024.04.02 |
---|---|
[Programmers] 과일 장수(Java) (0) | 2024.01.12 |
[Programmers] PCCE 기출문제 10번 / 데이터 분석 (0) | 2024.01.07 |
[Programmers] PCCE 기출문제 9번 / 이웃한 칸 (1) | 2024.01.02 |
[Baekjoon] 1173번 운동 (Java) (2) | 2023.11.12 |