[프로그래머스][LV.1] 두 정수 사이의 합 | python3

2025. 1. 16. 11:09프로그래머스/LV.1

 

문제 링크: 두 정수 사이의 합

 

문제 설명

문제 설명

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

제한사항
- a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.

 


문제 풀이

처음에는 sum(n for n in range(a,b+1)) 이렇게 풀었는데 항상 a<b 가 아니였다.

그래서 if문으로 조건을 나누어서 풀었다.

 

내코드

def solution(a, b):
    
    if a<=b:
        answer = sum(n for n in range(a,b+1))
    else:
        answer = sum(n for n in range(b,a+1))
    return answer

 

 


더보기

다른사람풀이

 

def adder(a, b):
    if a > b:
        a, b = b, a
    return sum(range(a, b + 1))

굳이 for문을 쓸 필요도 없고... if 문으로 a>b일때 서로를 바꾸어서 저장해서 계산을 하다니...

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

수열공식 (n-1)n/2 를 이용하여 푼 풀이라고 한다..

등차수열의 합 공식

시간복잡도가 'O(1)' 라고 한다.... 

이래서 수학공부를 하는 구나..

 

 


 

 

 

 

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

min max로 하는 방법도 있음