데이터분석 기록일지

문제풀이/프로그래머스

[프로그래머스 Lv.1] 두 정수 사이의 합 (Python)

야하루 2024. 7. 9. 14:03

코딩테스트 연습 - 두 정수 사이의 합 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제

두 정수 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의 대소관계는 정해져있지 않습니다.

 

 

입출력 예
a b return
3 5 12
3 3 3
5 3 12

 

 

 


풀이

 

아이디어:  a와 b 중에서 큰 수와 작은 수를 구별하고, 두 수 사이의 범위를 range()로 지정하여 합한다.
# 풀이1
def solution(a, b):
    if a <= b:
        answer = sum([ x for x in range(a,b+1)])
        return answer
    else:
        answer = sum([ x for x in range(b,a+1)])
        return answer

-> 처음에는 min(), max()를 사용하는 방법이 생각이 안나서, a가 큰 경우와 b가 큰 경우를 나눠서 코드를 작성했다.

 

 

 

 

# 풀이2
def solution(a, b):
    small = min(a,b)
    big = max(a,b)
    answer = sum(range(small, big+1))
    return answer

-> min()과 max()로 대소관계 구별해 주고 코드 한번만 작성하여 끝내기

 

 

 

 

 

# 풀이3
def solution(a, b):   
    minimum, maximum = min(a, b), max(a, b)
    return (maximum + minimum) * (maximum - minimum + 1) / 2

-> 언젠가 수학시간에 배웠던 등차수열 합 공식을 사용.

 

 

 

+) 등차수열 합 공식

a = 첫번째 항, l= 마지막 항, n=총 개수(a부터 l까지 항들의 개수)