[BAEKJOON]NO.110プラスサイクル
https://www.acmicpc.net/problem/1110
問題は簡単そうで、すぐに符号化に入りたいのですが、
これらの数字だけを遊ぶ問題はかえって混同されやすい.
自分の言語で変換する仕事だと思って計画を立てた.
計画の作成
上のように大体書いて、それからコードを始めます.
今回は上の計画ほど完璧ではありませんが、私はやはり問題を正確に理解することができます.
計画を立てるのに役立つ.
コードと計画の違いは
アルゴリズムを実行するためにnewnumberとsumのほかにinputとtargetという変数も使用した.
理由はwhile文の条件のためです.
最初はnewnumberとinputが違うと繰り返してもらいました.
newNumberでビット数を取得するには、inputの値をnewNumberに入れる必要があります.
それは同じで、繰り返しが終わりました.
もう一つのポイントはnewnumberを-1に初期化することです.
テストケースに0を入れる場合は、1が必要です.
なぜなら、newnumberの初期値が0の場合、targetも0になり、繰り返して終了しないからである.
本のコードでは、関数の名前が簡潔で、内容も1行で終わるので、いい感じです.
問題は簡単そうで、すぐに符号化に入りたいのですが、
これらの数字だけを遊ぶ問題はかえって混同されやすい.
自分の言語で変換する仕事だと思って計画を立てた.
計画の作成
上のように大体書いて、それからコードを始めます.
今回は上の計画ほど完璧ではありませんが、私はやはり問題を正確に理解することができます.
計画を立てるのに役立つ.
#include <iostream>
using namespace std;
int GetFirstDigit(int num)
{
return num / 10;
}
int GetSecondDigit(int num)
{
return num % 10;
}
int MakeNewNumber(int n1, int n2)
{
return (n1 * 10) + n2;
}
int main(void)
{
int input = 0, sum = 0;
int newNumber = -1;
int cycle = 0;
cin>>input;
int target = input;
while(newNumber != target)
{
sum = GetFirstDigit(input) + GetSecondDigit(input);
newNumber = MakeNewNumber(GetSecondDigit(input), GetSecondDigit(sum));
input = newNumber;
cycle++;
}
cout<<cycle<<endl;
}
コードと計画の違いは
アルゴリズムを実行するためにnewnumberとsumのほかにinputとtargetという変数も使用した.
理由はwhile文の条件のためです.
最初はnewnumberとinputが違うと繰り返してもらいました.
newNumberでビット数を取得するには、inputの値をnewNumberに入れる必要があります.
それは同じで、繰り返しが終わりました.
もう一つのポイントはnewnumberを-1に初期化することです.
テストケースに0を入れる場合は、1が必要です.
なぜなら、newnumberの初期値が0の場合、targetも0になり、繰り返して終了しないからである.
Reference
この問題について([BAEKJOON]NO.110プラスサイクル), 我々は、より多くの情報をここで見つけました https://velog.io/@minjujuu/BAEKJOON-NO.1110-더하기-사이클テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol