[프로그래머스] Lv1_두 정수 사이의 합

박선영·2023년 10월 5일
0


Lv1_두 정수 사이의 합

📄Description

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

입출력 예시

abreturn
3512
333
5312

🤔생각 정리

  1. a, b의 대소관계를 정해줘야겠네
  2. range 함수를 사용해서 a와 b 사이의 정수값을 얻어야겠네

💡Pseudo Code💡

1. a와 b 비교해서 a < b로 할당
2. range(a, b+1) 합산

🖥️코드화

def solution(a, b):
	# 대소관계 정의
	a, b = (a, b) if a > b else (b, a) 
    return sum(range(a, b+1))

📌코드 비교 및 감상

  1. a, b의 대소관계 정의
    변수 할당없이 min함수와 max 함수 사용해서 바로 적용할 수 있다.
sum(range(min(a,b), max(a,b)+1))
  1. 수열 공식 활용
    k=1nK=n(n+1)2\sum_{k=1}^{n}K = \large{n(n+1)\over2}
    자연수의 합 수열 공식을 활용해서 풀이할 수 있다. (진짜 충격 받았다... 이렇게도 생각할 수 있다니..😧)
    그 분들의 코드를 인용하자면 이렇다.
(abs(a-b)+1)*(a+b)//2
profile
데이터를 만지는 사람

0개의 댓글