본문 바로가기

Python

[Python/level 1] 두 정수 사이의 합 - 12912, sum + 리스트 컴프리헨션 vs. for 반복문

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

code - 1차

def solution(a, b):
    result = 0
    if b >= a:
        for i in range(a, b+1):
            result += i
        return result
    else:
        for i in range(b, a+1):
            result += i
        return result

 

 

code - 2차

# sum + 리스트 컴프리헨션
def solution(a, b):
    if a > b:
        a, b = b, a
    return sum([i for i in range(a, b+1)])

# for 반복문
def solution(a, b):
    result = 0
    if a > b:
        a, b = b, a
    for i in range(a, b+1):
        result += i
    return result
  • sum + 리스트 컴프리헨션
    • 리스트를 먼저 생성해야 하기 때문에 메모리 사용량이 더 많아집니다.
    • 리스트 생성과 메모리 할당 과정이 포함되어 있어, 연산 속도가  다소 느려질 수 있습니다.
  • for 반복문
    • 리스트를 만드는 과정이 없고, 각 숫자를 직접 더하기 때문에 연산 속도가 더 빠릅니다.
    • 범위가 클수록 이 차이는 더욱 커질 것이기 때문에, 두 번째 코드가 더 유리할 것입니다.

 

반응형