두 정수 사이의 합
문제 설명
두 정수 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)))
코드 설명
전달받은
a
와b
사이의 정수를 순회하기 위한 반복문을 진행한다.만일 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))
를 이용한다.그러고보니, 그냥
range
를sum
에 인자로 줘도 되었는데 왜 굳이list
를 만들었었지..그냥
iterable
한 객체만 주면 되는걸 굳이list
로 만들었었군...
'Algorithm & SQL > Programmers' 카테고리의 다른 글
[Algorithm] [Python] Programmers - 문자열 내림차순으로 배치하기 (0) | 2019.10.24 |
---|---|
[Algorithm] [Python] Programmers - 문자열 내 p와 y의 개수 (0) | 2019.10.24 |
[Algorithm] [Python] Programmers - 나누어 떨어지는 숫자 배열 (0) | 2019.10.23 |
[Algorithm] [Python] Programmers - 같은 숫자는 싫어 (0) | 2019.10.22 |
[Algorithm] [Python] Programmers - 가운데 글자 가져오기 (0) | 2019.10.22 |