BJ1110_더하기_싸이클_python

Kidon Seo·2021년 4월 16일
0

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_numnum과 같지 않을 경우로 정의할 생각이었는데 그러면 temp_num이 처음 저장했을 때 무조건 num과 같을 수 밖에 없기 때문에 첫 사이클을 무조건 이행해야한다는 비효율적인 요소가 생겼다.

5. 풀이 후 알게된 개념과 소감

다른 개발자들의 풀이를 보면서 애초에 while문의 조건을 True로 걸고 원하는 조건이 나왔을때 break 또는 False로 바꿔서 나올 수 있는 방법을 배웠다.

Credits:

0개의 댓글