BJ 1110プラスサイクルPython


1.問題リンク


https://www.acmicpc.net/problem/1110

2.試合前の計画と考え方


<クリア情報>


1)入力値:サイクル計算用N値
2)出力値:サイクル数N
3)制約:0<=N<=99
4)例外:0は無条件1を表す

<共通論理>


数字1=ab=>a+b=cd
数字2=bd=>b+d=ea
数字3=da=>d+a=fb
数字4=ab=数字1
=>サイクル=3

3.解答

def calc_addition_cycle(num):
  cycle_check = num
  cycle_count = 0
  temp_num = 0
  next_num = 0
  isTrue = True
  while isTrue:
    temp_num = num // 10 + num % 10
    next_num = temp_num % 10 + (num % 10) * 10
    num = next_num
    cycle_count += 1
    if next_num == cycle_check:
      isTrue = False
  return cycle_count

print(calc_addition_cycle(26)) # 4
print(calc_addition_cycle(55)) # 3
print(calc_addition_cycle(1)) # 60
print(calc_addition_cycle(0)) # 1

4.問題を解くときに直面する困難と悩み


最初は、whileの条件をtemp_numとして保存する入力値として定義しようとしたが、numに等しくなければ、temp numは最初の保存時にnumに等しくないため、最初の周期を履行しなければならない無効な要素が生じた.

5.解答して分かる概念と感じ


他の開発者の解答を見て、当初はwhile問の条件をTrueに掛け、希望の条件が出たときにbreakまたはFalseを取り替える方法を学んだ.

Credits:

  • [BaekJoon/Python 3]伯俊1110プラスサイクル