자바 프로그래머 기초 프로그램 시험문제 php 도 구현가능합니다. 한번 풀어보세요
문제: 한 쌍이 토끼가 태여나서 3개월부터 매월 한 쌍의 토끼를 낳는다. 새끼토끼는 3개월후부터 매월 한쌍의 토끼를 낳는다.
만약 모든 토끼가 죽지 않고 24개월 새끼를 낳는다면 매월 몇 쌍의 토끼를 낳을수 있을까요?
한번 풀어보세요 이건 자바프로그래머 시험 문제입니다. php 로도 구현이 됩니다.^^
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 10개
int birthMonth;
Rabbit(int month){
birthMonth = month;
}
boolean checkBreed(int month){
return month - birthMonth >= 3;
}
};
List<Rabbit> rabbits = new LinkedList<Rabbit>();
rabbits.add(new Rabbit(1));
rabbits.add(new Rabbit(1));
System.out.println("토끼 2마리로 시작합니다.");
for(int month=1; month<=24; month++){
System.out.println(String.format("%d째 월입니다.", month));
int cnt = 0;
for(Rabbit rabbit : rabbits){
if(rabbit.checkBreed(month)){
cnt++;
}
}
System.out.println(String.format("새끼를 낳을수 있는 토끼가 %d마리, %d쌍 있습니다.", cnt, cnt / 2));
for(int i=0; i<cnt / 2; i++){
rabbits.add(new Rabbit(month));
}
System.out.println(String.format("%d마리의 토끼가 새로 태어나서 총 %d마리가 있습니다.", cnt / 2, rabbits.size()));
}
System.out.println(String.format("최종적으로 총 %d마리가 되었습니다.", rabbits.size()));
$rabbit_num=1;
$rabbit=rabbits($rabbit_num);
function rabbits($rabbit){
$rabbit1 = $rabbit;
$rabbit2 = 0;
$allMonth = 24;
$rabbit = array();
for($i=3; $i<=$allMonth; $i++){
$rabbit1++;
if($i>=6){
$rabbit2++;
}
$rabbit_count=$rabbit1+$rabbit2;
echo $i.'월에는'.$rabbit1.'+'.$rabbit2.'</br>';
}
return $rabbit_count;
}
print_r($rabbit);
?>
입문자인데 지적좀해주세요!
2. 프로그램 작성할때 최대한으로 코드량을 주려서 작성하는 습관을 드려야합니다.enoeht 님도 마찬가지구요.
3. 저는 개인적으로 중복변수사용을 찬성하지 않습니다.
function rabbits($rabbit){
$rabbit1 = $rabbit;
$rabbit = array();
이렇게 작성하면 예상치 못한 문제가 발생될수도 있습니다.
enoeht 님 , PHP유망주 님 감사합니다.
제1개월토끼:1쌍
제2개월토끼:1쌍
제3개월토끼: 2쌍
제4개월토끼: 3쌍
제5개월토끼: 5쌍
제6개월토끼: 8쌍
제7개월토끼: 13쌍
제8개월토끼: 21쌍
제9개월토끼: 34쌍
제10개월토끼: 55쌍
제11개월토끼: 89쌍
제12개월토끼: 144쌍
제13개월토끼: 233쌍
제14개월토끼: 377쌍
제15개월토끼: 610쌍
제16개월토끼: 987쌍
제17개월토끼: 1597쌍
제18개월토끼: 2584쌍
제19개월토끼: 4181쌍
제20개월토끼: 6765쌍
제21개월토끼: 10946쌍
제22개월토끼: 17711쌍
제23개월토끼: 28657쌍
제24개월토끼: 46368쌍
public static void main(String[] args) {
System.out.println("제1개월토끼:1쌍");
System.out.println("제2개월토끼:1쌍");
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("제" + i +"개월토끼: "+f2+"쌍");
}
}
php로 풀면
<?php
echo "제1개월토끼:1쌍"."<br />";
echo "제1개월토끼:1쌍"."<br />";
$F1=1;
$F2=1;
$F;
$M =24;
for($i=3; $i<=$M; $i++) {
$F = $F2;
$F2 = $F1 + $F2;
$F1 = $F;
echo "제".$i."개월토끼는".$F2."쌍입니다."."<br/>";
}
?>
설명을 다 올렸는데 저장안되고 날려 버렸네요..
두번 작성이 어려워서 ㅠ.ㅠ 소스만 올리겠습니다.
그렇다면 정답이 46368마리가 아니라 46368쌍이란거 맞죠?
한번 노트에 팬을 들고 플어보시면 좀 더 도움이 될겁니다.
1개월에는 새끼를 낳지 못햇으니 그냥 한쌍이 구요 2개월에도 새끼 낳지 못했으니 그냥 한쌍이구요 3개월에는 새끼를 낳쓰니 2쌍이 되죠 두쌍에서 한쌍은 이미 새끼 낳을수있기에 매월 한쌍씩 낳을수있죠..