정구리의 우주정복
[BOJ] 백준 1110번 -더하기 사이클 파이썬 본문
반응형
1110번 문제 해설
Python 으로 풀었음 ( 하지만 다른 언어도 적용 가능할듯 )
#정답은 여러가지가 있고 단지 내가 푼 방법을 올리는 것임
1) 문제
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)) 을 호출해주고
사이클의 개수를 출력해주면 된다
반응형
'ALGORITHM > SOLVE' 카테고리의 다른 글
[BOJ] 백준 2534 - 별찍기 -13 파이썬 (0) | 2020.04.09 |
---|---|
[BOJ] 백준 5543번 - 상근날드 파이썬 (0) | 2020.04.09 |
[BOJ] 백준 1110번 - 더하기 사이클 파이썬 (이전보다 더 간단) (0) | 2020.04.08 |
[BOJ] 백준 10828번- 스택 파이썬 (1) | 2019.04.09 |
[BOJ] 백준 1152번- 단어의 개수 파이썬 (0) | 2019.04.06 |
Comments