본문 바로가기

Algorithm & SQL/Programmers

[Algorithm] [Python] Programmers - 두 정수 사이의 합

두 정수 사이의 합


문제 설명


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

제출 코드


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

코드 설명


전달받은 ab 사이의 정수를 순회하기 위한 반복문을 진행한다.

만일 a가 b보다 작거나 같은 경우, range(a, b+1)를 통해 a~b까지의 정수를 순회하며 list에 넣고 최종적으로 sum()을 통해 리스트 내 원소의 값을 모두 합하여 반환한다.

만일 그 외의 경우인 a가 b보다 큰 경우, range(b, a+1)를 통해 b~a까지의 정수를 순회하며 list에 넣고 최종적으로 sum()을 통해 리스트 내 원소의 값을 모두 합하여 반환한다.

다른 사람의 풀이


필자는 필자 코드를 개인적으로 간단하지만 직관적이지는 못하다고 생각했다.

그래서 다른 사람의 풀이를 살펴보던 중 엄청 간단하며 직관적인 코드를 발견했다.

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

만일, a가 b보다 큰 경우 a,b = b,a로 a와 b를 서로 교환시킨다.

그 이후 a부터 b까지의 합을 구하기 위해 sum(range(a, b+1))를 이용한다.

그러고보니, 그냥 rangesum에 인자로 줘도 되었는데 왜 굳이 list를 만들었었지..

그냥 iterable한 객체만 주면 되는걸 굳이 list로 만들었었군...