728x90
반응형
안녕하세요.
이번 포스팅은 프로그래머의 뇌를 단련하는 수학퍼즐 4번문제인 막대 자르기 를 풀어보겠습니다
길이 n[cm]의 한 막대를 1[cm] 단위로 자른다고 생각해 본다. 단, 하나의 막대는 한 번에 한 사람만이 자를 수 있다. 잘린 막대가 3개가 되면, 동시에 3명이 자를 수 있다.
최대 m명이 있을 때 막대를 자르는 최소 횟수를 구해 보시오.
예를 들어 n = 8, m = 3일 총 4번 자를 수 있다.
문제 1
n = 20, m = 3일 때의 횟수를 구해 보아라.
문제 2
n = 100, m = 5일 때의 횟수를 구해 보아라.
package cutBar;
import java.util.Scanner;
public class CutBar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("막대 길이 : ");
int length = input.nextInt();
int beforeCutLength = length;
System.out.print("인원 수 : ");
int person = input.nextInt();
int cutCount = 0; // 자른 횟수
int canCutMen = 1; // 자를 수 있는 사람 수
do {
cutCount++;
length = length - canCutMen;
if (length <= 0) break;
if (canCutMen < person) canCutMen++;
} while (true);
System.out.printf("막대 길이 : %d, 인원 수 : %d, 자른 횟수 : %d", beforeCutLength, person, cutCount);
}
}
출력 결과 :
막대 길이 : 8
인원 수 : 3
막대 길이 : 8, 인원 수 : 3, 자른 횟수 : 4
문제 1 :
막대 길이 : 20
인원 수 : 3
막대 길이 : 20, 인원 수 : 3, 자른 횟수 : 8
문제 2 :
막대 길이 : 100
인원 수 : 5
막대 길이 : 100, 인원 수 : 5, 자른 횟수 : 22
728x90
반응형
'알고리즘 > 수학 퍼즐' 카테고리의 다른 글
[수학 퍼즐 / java] 06.콜라츠 추측 (0) | 2021.03.23 |
---|---|
[수학 퍼즐 / java] 05. 아직도 현금으로 계산하다니! (0) | 2021.03.23 |
[수학퍼즐 / java] 03.카드를 뒤집어라! (0) | 2021.03.23 |
[수학 퍼즐 / java] 01.앞뒤가 같은 10진수 만들기 (0) | 2021.03.23 |
댓글