現在働いている会社ではシステムエンジニア研修の1つに「paizaBランク問題をクリア」があるのでその目標を達成するまでの過程を備忘録として残します。
業務に参加した際に記述方法を忘れてしまっているであろう未来の自分に向けて、メモを残すと同時にこの記事がC#を学習している方、同じ箇所で躓いている方の参考になればと思っています。
ですので内容に誤りがある場合やより良い記述をご存知の方はコメントで共有していただけると嬉しいです。
それでは本編に入ります。
今回はPaizaラーニング、レベルアップ問題集「シミュレーション」の問題をC#で回答したときの内容になります。
STEP: 1 辞書の基本
問題文:https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_simulation_step1
paiza.cs
using System;
class Program
{
static void Main()
{
int NaturalNumber = 0;
for(var i = 10000; i < 10013; i++)
{
NaturalNumber = i;
if(NaturalNumber % 13 == 0)
{
Console.WriteLine(i);
}
}
}
}
STEP: 2 シミュレーションの練習
問題文:https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_simulation_step2
paiza.cs
using System;
class Program
{
static void Main()
{
int MAX_NUM = int.Parse(Console.ReadLine());
var aA_B = Console.ReadLine().Split(' ');
int A = int.Parse(aA_B[0]);
int B = int.Parse(aA_B[1]);
int paizaNUM = 1;
int kirishimaNUM = 1;
for(int i = 1; i <= 10000; i++)
{
kirishimaNUM += paizaNUM * A;
if(MAX_NUM < kirishimaNUM)
{
Console.Write(i);
i = 10001;
}
paizaNUM += kirishimaNUM % B;
}
}
}
FINAL問題 シミュレーション
問題文:https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_simulation_boss
メソッドを分離して記述する必要があったので記述方法に少し苦戦しました。
paiza.cs
using System;
class Program
{
public int iAttackCount = 0;
public int MyAttackDamage = 0;
public int EnnemyAttackDamage = 0;
public int MyAttack(int iAttackCount)
{
if(iAttackCount <= 2){
MyAttackDamage = 1;
}
else
{
MyAttackDamage = EnnemyAttack(iAttackCount - 1) + EnnemyAttack(iAttackCount - 2);
}
return MyAttackDamage;
}
public int EnnemyAttack(int iAttackCount)
{
if(iAttackCount <= 2){
EnnemyAttackDamage = 1;
}
else
{
EnnemyAttackDamage = MyAttack(iAttackCount - 1) * 2 + MyAttack(iAttackCount - 2);
}
return EnnemyAttackDamage;
}
static void Main()
{
bool bHPFlag = true;
int MY_HP = int.Parse(Console.ReadLine());
Program obj = new Program();
while (bHPFlag)
{
obj.iAttackCount++;
obj.MyAttack(obj.iAttackCount);
obj.EnnemyAttack(obj.iAttackCount);
MY_HP -= obj.EnnemyAttackDamage;
if(MY_HP <= 0)
{
bHPFlag = false;
}
}
Console.WriteLine(obj.iAttackCount);
}
}
↧