본문 바로가기

알고리즘/Python 기초

파이썬 - 두 정수 사이의 합(lv.1)

문제 ) 프로그래머스 - 두 정수 사이의 합(lv.1)

📌 문제 설명

두 정수 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

✏️ 처음 생각한 방법 : for i in range(a, b + 1)의 i 값을 sum()을 사용하여 전체 더해주기

✏️ b값이 a값 보다 작은 경우가 문제 ==> if 조건문 사용

def solution(a, b):

    answer = 0
    if a > b:
        answer = sum(i for i in range(b, a + 1))
    else:
        answer = sum(i for i in range(a, b + 1))
    return answer

 

✏️ range(a, b) 이미 이터러블한 값이므로 for문으로 돌리지 않고 sum()에 바로 넣는 게 가능하다!

def solution(a, b):

	answer = 0
    if a > b:
        answer = sum(range(b, a + 1))
    else:
        answer = sum(range(a, b + 1))
    return answer

 

✏️ if 조건문 : a가 b 보다 클 경우 ==> a, b = b, a

def solution(a, b):

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

 

✏️ 다르게 생각해 보기 : 처음부터 a, b의 값 중 크고 작은 값을 구분해서 range()에 넣기

✏️ min(a, b) / max(a, b)

def solution(a, b):

	return sum(range(min(a, b), max(a, b) + 1))