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 함수를 사용함 

✏️ 생각

단순히 알고리즘적으로 맞았다고 끝내지 말고

파이썬 문법 활용해서 좀 더 깔끔하게 짤 수 있는 방법을 고민해보자