for문 내 결과 바로 출력 vs for문 내 결과 리스트 append 후 출력 속도 차이 (SW Expert 3750번 문제)

조회수 442회

안녕하세요

SW Expert Academy 3750번 문제를 풀다가 모르는 문제가 생겼는데 구글링해도 해결책을 찾아볼 수 없어서 여기에 질문하게 되었습니다.

문제 무단 복제가 안되서 간략히만 알려드리자면 자리수의 합을 한자리가 될 때까지 더하는 문제입니다.

제가 처음 생각한 코드는 아래와 같습니다.

T = int(input())

for test_case in range(1, T + 1):
    f_n = int(input()) % 9    # 이 자리에 588432 같은 값이 input() 자리에 들어옵니다.
    answer = f_n if f_n != 0 else 9

    print(f"#{test_case} {answer}")

이미지

해당 코드를 제 로컬 파이참에서 돌려봤을 때 이상은 없었습니다. 그런데 사이트에 제출 시 문제 시간 초과에 자꾸 걸리더라구요.

헤매고 있다가 해당 문제를 푼 친구의 도움을 받아 아래와 같이 고쳤습니다.

T = int(input())

answer = []

for test_case in range(1, T + 1):
    f_n = int(input()) % 9    # 이 자리에 588432 같은 값이 input() 자리에 들어옵니다.
    answer.append( f_n if f_n != 0 else 9 )

for test_case in range(1, T + 1):
    print(f"#{test_case} {answer[test_case-1]}")

이미지

for문이 돌릴 때마다 나오는 계산 값을 answer라는 리스트에 매번 append를 해주고, 그 결과를 따로 for문을 작성하여 프린트 했더니 실행 시간이 확 줄었습니다.

이거 도대체 왜 이런건가요?

아무리 생각해봐도 아래의 코드가 리스트에 append 하는 시간도 더 걸리고 별개의 for문을 도는 시간도 더 걸릴 것 같은데, 실행 시간이 오히려 줄어서 이해를 할 수가 없습니다.

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)