총 세 문제 중 한 문제만 풀었다.
백준 1110번 https://www.acmicpc.net/problem/1110
코드를 입력하세요
# 10 보다 작다면 0을 붙이기
if int(n) < 10:
n = '0'+n # still n is str
cnt = 0
# 앞자리, 뒷자리
first = int(n[0])
second = int(n[1])
def noidea(first, second, cnt):
# 덧셈 연산
def added_one(first, second):
added_one = first + second
return added_one
# 새로운 수 조합 만들기
def make_new(first, second):
new_num = str(second) + str(added_one(first, second))
return new_num
# 68 나옴.
r_int = make_new(first, second)
cnt += 1
# recursion종료조건
if r_int == int(n):
return(print(cnt))
noidea(second, added_one, cnt) # added_one 이 str
return print(cnt)
noidea(first, second, cnt) # 첫호출
처음에 while로 풀다가 헷갈려서 재귀로 했는데 while로 간단하게 표현하는게 더 나았겠다.
더하거나 합치는 부분을 함수로 빼는 방식은 코드가 길어지면 좋겠지만 현재 문제를 풀기 위해서는 불필요했다.
아래는 내가 리뷰했던 세욱님의 코드인데,
입력 받은 부분을 int로 받고 합쳐야 하는 부분에서 string으로 형변환하고 그걸 또 int로 한번 감싸줘서 넘기는 것을 볼 수 있다.
N = int(input())
cnt=0
result=N
while 1:
if result<10:
result = str(0)+str(result)
num = int(str(result)[0])+int(str(result)[1])
if num>=10:
result = int(str(result)[1]+str(num)[1])
else :
result = int(str(result)[1]+str(num))
cnt+=1
if result==N:
break
이번주 일요일에 다시 연습삼아 짜보는 것으로 오늘은 마무리.