week01-codingtest

그로밋·2023년 10월 19일
0

krafton jungle

목록 보기
6/58

총 세 문제 중 한 문제만 풀었다.
백준 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

이번주 일요일에 다시 연습삼아 짜보는 것으로 오늘은 마무리.

profile
Work as though your strength were limitless. <S. Bernhardt>

0개의 댓글