본문 바로가기

코딩테스트 준비/프로그래머스

[프로그래머스] 두 정수 사이의 합

반응형

 

 

 

안녕하세요~

27년차 진로탐색꾼 조녁입니다!!

1일 1코테 3일차!!!

 

· 문제명 : 두 정수 사이의 합

· 사용 언어 : Python3

· 난이도 : Level1

· 문제 설명 

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

 

오답 코드

: 18점/100점 , 한쪽 range 함수는 음수  반영 안된다.

 

def solution(a, b):
   if a == b :  
    	return a 
   else: 
    if a > b :
    	answer = sum(set([i for i in range(a+1)])-set([i for i in range(b)])) 
        return answer 
    else: 
    	answer = sum(set([i for i in range(b+1)])-set([i for i in range(a)]))
        return answer
        
        
 #음수 커버 안된다.

 

정답 코드

: a,b 대소 비교가 안되는 형태이므로, 대소비교부터 해준다. range 양쪽에 숫자사용해준다.

 

def solution(a, b):
    if a < b :
        return sum(range(a, b + 1))
    else:
      return sum(range(b, a + 1))

 

숏코딩

: 두 가지 경우 a,b의 순서만 바뀌므로, 애초에 한 가지 경우(a >b)를 정해서 순서를 a,b = b,a로 바꿔준다.

그러면 모든 경우에서 sum(range(a,b+1))로 표현할 수 있다.

 

def solution(a, b):
    if a > b: 
    	a, b = b, a
    return sum(range(a,b+1))
반응형