통과한 코드

def dfs(num):
    global res
    # 탈출조건, 한 자리 숫자일 때
    if len(num) == 1:
        
        # res에 현재 값 저장 
        res = num
        return

    temp = 0
    for w in num:
        temp += int(w)

    dfs(str(temp))

    return

T = int(input())

n = [str(input()) for _ in range(T)]

for q in range(T):
    res = 0
    dfs(n[q])

    print('#{} {}'.format(q+1,res))

그 외

시간 초과가 발생한 초기 코드

 

T = int(input())

for tc in range(1,1+T):
    n = str(input())

    while len(n) > 1:
        res = 0
        for q in n:
            res += int(q)
        n = str(res)

    print('#{} {}'.format(tc,n))

느낀점

 

확실히 한번에 모아서 print하는 방식과 한번씩 print하는 방식에는 차이가 존재하는 것같다.

 

이전까지는 '어짜피 같은 10만번을 print하는 것이기 때문에 동일하다'고 생각했으나,

 

이렇게 차이가 발생하는 것을 보니 확실히 알 수 있었다.

 

다만, 이유는 아직 모르겠다...

 

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다