2020. 4. 21. 21:22

[python](프로그래머스)두 정수 사이의 합

문제 설명


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

 

문제 풀이


  1. 문제에서 a와 b의 대소관계는 정해져 있지 않다고 했지만 우리가 원하는 것은 최소값 부터 최대값까지의 범위이므로 만약 a가 b보다 더 크다면 이 둘의 순서를 바꿔주어야 한다.
  2. 해당하는 범위의 값들을 다 더한 값을 리턴해준다.
def solution(a, b):
    answer = 0
    if a>b:
        a, b = b, a
    for i in range(a,b+1):
        answer += i
    return answer

 

다른 풀이


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

같은 방식이지만 나는 일일히 다 더했지만 여기는 sum함수를 이용해서 처리했다. 같은 방식과 로직이지만 함수로 더 깔끔하게 표현했다.

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

두 수 사이의 합을 구하는 공식(등차수열 1항부터 항까지의 합을 구하는 공식) 2분에 항의 개수 곱하기 첫항 더하기 끝항을 한다.

단 여기서는 a와b의 대소관계가 정해져있지 않다고 했으니 abs함수로 절대값으로 처리했다.


  • ㅇㅇ 2020.06.10 19:55

    위에 답 틀렷다는데요...맞는 답 올려주세요

    은유  2020.06.11 15:42 신고

    함수명 adder를 solution으로 바꾸니까 잘되네요 프로그래머스에서 다른 함수명은 런타임에러로 인식하는 모양입니다.