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문을 도는 시간도 더 걸릴 것 같은데, 실행 시간이 오히려 줄어서 이해를 할 수가 없습니다.
댓글 입력