문제

https://programmers.co.kr/learn/courses/30/lessons/12912?language=python3

풀이

def solution(a, b):
    return sum([i for i in range(min(a,b), max(a,b)+1)])

더 나은 풀이

def adder(a, b):
    return sum(range(min(a,b),max(a,b)+1))

range 함수를 꼭 for문으로 돌릴 필요가 없다.
여태 인덱싱용으로만 사용했으니 for문에 너무 익어버렸다.

def adder(a, b):
    return (abs(a-b)+1)*(a+b)//2

절대값 abs() 함수를 이용한 방법

a = 5, b = 10
(abs(a-b)+1)*(a+b)//2 = 45
5 + 6 + 7 + 8 + 9 + 10 = 45

반복문 따위 없으니 속도도 제일 빠르다.
아… 수학이 절실해지는구나.

댓글남기기