코딩 뚝딱이

[프로그래머스] 연습문제 : 두 정수 사이의 합 [Python] 본문

알고리즘&코딩테스트/Python 코테

[프로그래머스] 연습문제 : 두 정수 사이의 합 [Python]

Desiree 이나 2023. 3. 3. 14:47

 LV2  < 두 정수 사이의 합 >

■ 문제 설명

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

 

■ 기본 제공 틀 (Python)

def solution(a, b):
    answer = 0
    return answer

 

 

 

 

 

 ▼   A N S W E R    


■ 내 풀이 (Python)

def solution(a, b):
    answer = 0
    if (a > b):
        for x in range (b, a+1):
            answer += x
    elif (a < b):
        for x in range (a, b+1):
            answer += x
    else:
        answer = a
    return answer

 

■ 내 풀이 설명 (Python)

주어지는 a와 b의 대소 관계를 모르기 때문에 다음과 같이 3가지 경우로 나눈 후에 풀어야한다.

1) a > b

2) a < b

3) a = b 

 

우선 a가 b보다 클 때 (a > b)를 기준으로 풀어보면, 

a와 b 사이에 속한 모든 정수를 더해야 하기 때문에 for문을 사용하여 풀었다.

------------------------------------------------------------------------------------------------------------------------------------------------------

range(start, stop, step)

예) range (1, 5)이면 1, 2, 3, 4를 의미함 // step의 default 값은 1임

------------------------------------------------------------------------------------------------------------------------------------------------------

a와 b사이의  모든 x에 대해 값의 합을 구하는 것이므로 범위는 range(b, a+1)이다.

answer = 0으로 두고 시작했을 때, 아래의 for문에 해당하는 모든 x의 값을 answer에 차곡차곡 더하는 것이다.

    if (a > b):
        for x in range (b, a+1):
            answer = answer + x

마찬가지로, a가 b보다 작을 때(a < b)는 아래와 같다.

    elif (a < b):
        for x in range (a, b+1):
            answer += x

제한 조건에서 a와 b가 같은 경우에는 둘 중 아무수나 return하라고 했으므로 

내 마음에 드는 a를 answer로 할당..^^

    else:
        answer = a

여기서 조건을 else가 아닌 elif (a = b)로 해줘도 되지만,

이미 위에서 모든 경우가 다 나와서 else 자체가 a=b의 경우밖에 없기 때문에 else를 써줬다.

 

 

- 끝 - 

 

※ 코딩도 블로그도 처음이라 어색하지만, 기록용으로 계속 남겨보도록 하겠다.