JSITCLUB

파이썬 - 프로그래머스 - 두 정수 사이의 합 본문

파이썬/문제풀이

파이썬 - 프로그래머스 - 두 정수 사이의 합

jsitclub 2020. 6. 10. 17:50

    프로그래머스 level 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

     

     

    코딩테스트 연습 - 두 정수 사이의 합

    두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

    programmers.co.kr

     

    풀이 및 코드

     

    문제요약

    두 수 사이에 있는 숫자들의 합

     

     

    문제해설

    이 문제는 증가하는 숫자의 총계 구하는 문제로  반복문사용하여 숫자를 1씩 증가 시키고 그 증가된 수를 또다른 변수에 누적해서 더하는 방법(방법1) 과 range() 함수와 sum()함수를 이용하는 방법(방법2)을 사용 해 보겠습니다.

    지금까지 for문을 자주 사용하였으니 이번에는 while문을 사용해 보겠습니다. while문은 조건에 맞을동안 반복하는 반복문으로 for문처럼 사용변수가 문장에 있지 않기 때문에 이번과 같이 숫자를 증가 시키려면 변수가 하나 필요합니다.

    먼저 while문을 이용해서 1부터 20까지 출력 하려면

    i=1
    while(i<=20):
        print(i)
        i+=1

     

    이 숫자들의 누계를 구하려면 변수가 하나더 필요합니다.

    i=1
    answer=0
    while(i<=20):
        answer+=i
        print(i,answer)
        i+= 1

    위의 코드를 문제에서 원하는 함수 형태로 바꾸면 다음과 같습니다.

    def solution(a, b):
        answer = 0
        i=a
        while(i<=b):
            answer+=i
            i+=1
        return answer

    하지만, 위의 코드로 실행을 하면, a가 5이고 b가 3인 세번째 경우는 실행이 결과가 다르게 나옵니다. 그러므로 b가 a보다 작을 때는 두수를 서로 바꾸어 a가 작은수, b가 큰수가 되도록 바꿔주어야 합니다.

    두변수의 값을 바꾸는것은 원칙적으로 변수하나를 더 사용하여 바꿔야 하지만, 파이썬에서는 a,b=b,a 라고 적어주면 두수가 서로 바뀝니다.

     

     

    결과코드

    def solution(a, b):
        answer = 0
        if a>b:
        	a,b=b,a
            
        i=a
        while(i<=b):
            answer+=i
            i+=1
        return answer

    조금더 정리하면 다음과 같습니다.

    def solution(a, b):
        answer = 0
        if a>b:
        	a,b=b,a
            
        while(a<=b):
            answer+=a
            a+=1
        return answer

     

    두번째 방법(range(),sum() 이용)은 다음 코드 입니다. 이 방법은 따로 설명 드리지 않겠습니다.감사합니다.

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

     

    Comments