문제
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
반복문 따위 없으니 속도도 제일 빠르다.
아… 수학이 절실해지는구나.
댓글남기기