2019.05.22
프로그래머스 알고리즘 문제 (lv1)
- 두 정수 사이의 합
문제 설명
두 정수 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
나의 풀이 방법
의식의 흐름
- a와 b가 같은지 확인한다.
- a와 b 둘 중에 어느 수가 큰지 확인한다.
- 작은 수 먼저, 큰 수를 나열한다.
- a와 b사이의 숫자들을 하나씩 더한다.
컴퓨터에게는?
- a와 b가 다르고 a<b인 경우를 가정하여 계산한다.
- a와 b가 다르고 b<a인 경우를 가정하여 계산한다.
- a와 b가 같은 경우를 계산한다.
- answer을 반환한다.
코드
def solution(a, b):
answer = 0
if a != b and a < b:
for i in range(a, b+1):
answer += i
elif a != b and a > b:
for i in range(b, a+1):
answer += i
else:
return a
return answer
- if문이 많이 들어가서 좋지 못한 코드 인 것 같은데..
- 위의 if문과 아래의 if 문을 바꾸어 줄 수 있을 것 같다.
- if a>b: a,b = b,a 를 활용하여 위 아래를 합쳐 줄 수 있다.
다른 사람 풀이
# 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def adder(a, b):
# 함수를 완성하세요
if a > b: a, b = b, a
return sum(range(a,b+1))
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( adder(3, 5))
- sum(range())를 통해 그 사이에 있는 숫자들을 모두 더해 줄 수 있다는 것을 알게 되었다.
- if a>b : a,b = b,a를 나도 나중에 써먹어야겠다.
- 파이토닉하넹…