정구리의 우주정복

[BOJ] 백준 1110번 -더하기 사이클 파이썬 본문

ALGORITHM/SOLVE

[BOJ] 백준 1110번 -더하기 사이클 파이썬

Jungry_ 2019. 4. 5. 14:58
반응형

1110번 문제 해설

Python 으로 풀었음 ( 하지만 다른 언어도 적용 가능할듯 )

#정답은 여러가지가 있고 단지 내가 푼 방법을 올리는 것임

 

 

1) 문제

1110번 -더하기 사이클

 

26 => 2+6=8 => 68  이렇게 숫자가 진행이 된다

68 => 6+8=14 => 84 

//이전 숫자의 뒷자리와 새로 만들어진 수의 뒷자리를 더해주는 형식 !

 

그래서 이렇게 반복이 되다가 제일 처음의 숫자와 같아지면 몇 번만에 같아졌는지 출력하는 문제이다

 

2) 나의 풀이

from sys import stdin

number=stdin.readline()
cycle=1
#새로운 숫자 만들기
def sum_number(number):
    num=int(number)
    if num<10:
        return (num*10)+num
    else:
        #sum_num=자리수 두개 더한것
        sum_num=(num//10)+(num%10)
        new_num=((num%10)*10)+(sum_num%10)
        return new_num


#새로운 숫자 만든거 검사
def check_num(new_num):
    num=int(number)
    global cycle
    if num!=new_num:
        cycle=cycle+1
        renew_num=sum_number(new_num)
        check_num(renew_num)

        

        
check_num(sum_number(number))
print(cycle)

 

 

3) 풀이

 

첫번째 함수 sum_number 은 새로운 숫자를 만들어 주는 함수이다

예를들어 26 을 68로 만들어주는 그런 함수이다

 

두번째 함수 check_num은 만들어진 숫자가 맨 처음 숫자와 같은지 검사해주는 함수

만약 다르다면 cycle을 1을 올려주고 그 다음 숫자를 renew_num에 저장해준다(68 이였다면 84를 저장)

그리고 check_num 을 다시 호출해 새로운 숫자가 일치하는지 검사를 해준다

 

check_num(sum_number(number)) 을 호출해주고 

사이클의 개수를 출력해주면 된다

 

반응형
Comments