とりあえず100回もあれば決着がつくかと書いたコード。
当然ひっかかりました。残念。
ダメだったコード
import java.util.*;
public class Main {
public static void main(String[] args) {
// 自分の得意な言語で
// Let's チャレンジ!!
Scanner sc = new Scanner(System.in);
int paiza_hp = sc.nextInt();
int count = 0;//reset
int[] paiza_give_damage = new int[100];
int[] monster_give_damage = new int[100];
while(paiza_hp > 0){
count++;
//paiza attack
if(count==1 || count==2){
paiza_give_damage[count] = 1;
}else{
paiza_give_damage[count] = monster_give_damage[count-1] + monster_give_damage[count-2];
}
//monster attack
if(count==1 || count==2){
monster_give_damage[count] = 1;
}else{
monster_give_damage[count] = monster_give_damage[count-1]*2 + monster_give_damage[count-2];
}
//paiza hp
paiza_hp -= monster_give_damage[count];
}
//String line = sc.nextLine();
System.out.println(count);
}
}
解答例コードを見て構造を立て直しました。
自分流にアレンジしてあります。

通ったコード
import java.util.*;
public class Main {
public static void main(String[] args) {
// 自分の得意な言語で
// Let's チャレンジ!!
Scanner sc = new Scanner(System.in);
int paiza_hp = sc.nextInt();
int count = 0;//reset
int[] paiza_give_damage = {0,0,0};//今回ダメージ、1つ前ダメージ、2つ前ダメージ
int[] monster_give_damage = {0,0,0};
while(paiza_hp > 0){
count++;
//System.out.println("count is"+count);
//paiza
paiza_give_damage[2] = paiza_give_damage[1];//2つまえのダメ スライドする
paiza_give_damage[1] = paiza_give_damage[0];
if(count==1 || count==2){
paiza_give_damage[0] = 1;
}else{
paiza_give_damage[0] = monster_give_damage[1] + monster_give_damage[2];
}
//monster
monster_give_damage[2] = monster_give_damage[1];//2つまえのダメ スライドする
monster_give_damage[1] = monster_give_damage[0];
if(count==1 || count==2){
monster_give_damage[0] = 1;
}else{
monster_give_damage[0] = paiza_give_damage[0]*2 + paiza_give_damage[1];//ここ
}
//System.out.println(Arrays.toString(paiza_give_damage));
//System.out.println(Arrays.toString(monster_give_damage));
paiza_hp -= monster_give_damage[0];
}
System.out.println(count);
}
}
正直これ通ったのが自分でもよく分からない
はじめは、ここの部分、
monster_give_damage[0] = paiza_give_damage[1]*2 + paiza_give_damage[2];//ここ
としていたんですが、wrong answerになりました。配列をひとつずらしたら通りました。通ったけどなぜこれが正解なのかわからない。残念。

https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_simulation_boss
paiza問題集
0