STUDY/알고리즘
[프로그래머스] 두 정수의 합 (Python)
seonyounggg
2020. 12. 12. 02:34
✏️ 문제
programmers.co.kr/learn/courses/30/lessons/12912
코딩테스트 연습 - 두 정수 사이의 합
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우
programmers.co.kr
✏️ 풀이
두 정수 사이의 모든 정수의 합을 구하기 위해
for문의 range만 정해주고 차례로 더하면 되는 간단한 문제이다.
단, a와 b의 대소가 정해져있지 않다는 점이 꼭 처리해야할 부분이다.
문제 제대로 안읽어서 한 번 틀림ㅎ
✏️ 코드
def solution(a, b):
answer = 0
if a > b:
tmp = a
a = b
b = tmp
for x in range(a, b+1):
answer += x
return answer
a와 b 비교해줘서 a가 크다면 swap해줬다.
그 후에 반복문에서 차례로 더하는 식으로 아주 간단하게 풀었다.
✏️ 다른 사람 풀이
def adder(a, b):
return sum(range(min(a,b),max(a,b)+1))
방법은 완전히 똑같지만 sum, range, min, max함수 사용한 부분 체크하기
def adder(a, b):
if a > b: a, b = b, a
return sum(range(a,b+1))
swap방식도 체크!
(+) 참고할 만한 풀이
def adder(a, b):
return (abs(a-b)+1)*(a+b)//2
등차수열 합 공식 이용한 풀이
대소비교를 하는 대신 abs 함수를 사용함
✏️ 생각
단순히 알고리즘적으로 맞았다고 끝내지 말고
파이썬 문법 활용해서 좀 더 깔끔하게 짤 수 있는 방법을 고민해보자