문제
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
def solution(a, b):
if a > b :
a,b = b,a
answer = sum([i for i in range(a,b+1) ])
return answer
처음엔 for 문을 활용하여 풀었다. 하지만 실행시간이 엄청 나게 걸리길래 등차수열 합 공식이 생각 났다.
def solution(a,l):
return (abs(a-l)+1) * (a+l) / 2
# (abs(a-l)+1) = n 즉, 항의 개수
그 식을 만들어 풀어 봤더니 실행 시간이 0,00ms 로 변했다.
식 한번 계산하는 것과 모든 수를 확인 후 더해주는 것의 차이를 볼 수 잇었다.
Reference
수학방 - https://mathbang.net/609
'알고리즘' 카테고리의 다른 글
요소 개수 찾기 count() , Counter (1) | 2022.10.07 |
---|---|
정렬(오름,내림 차순) 및 리스트 요소 순서 뒤집기(reverse,reversed) (0) | 2022.10.05 |
프로그래머스 - Lv1. 정수 제곱근 판별 (0) | 2022.10.03 |
진수 변환 (0) | 2022.03.15 |
시간 복잡도 (Big-O) (0) | 2021.11.01 |