소소한 컴퓨터 이야기

두 정수 사이의 합

by Cori

문제

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

풀이

1. Me

def solution(a, b):
    answer = 0
    if a > b:
        for i in range(b, a + 1):
            answer += i
    else:
        for i in range(a, b + 1):
            answer += i
    return answer

a와 b를 비교하여 a가 b보다 큰 경우, a가 b보다 작은 경우를 구하여 범위 내 정수의 합을 구하였다.

 

2. Others

def adder(a, b):
    if a > b: a, b = b, a
    return sum(range(a,b+1))

a와 b를 비교하여 a가 b보다 큰 경우 a와 b를 swap.. sum 연산자를 활용하여 범위 내 정수의 합을 구하였다. 왜 sum 연산자를 생각 못 했을까 .. 

def adder(a, b):
    return (abs(a-b)+1)*(a+b)//2

엄청난 코드를 하나 발견해서 추가로 가져왔다. 두 정수 사이의 합을 구하는 수학 공식 = n * (n+1) / 2 를 구현한 것으로, 두 수 사이의 정수 개수를 구하기 위해 절대값 함수 (abs)를 이용하였다. 

 

해당 코드로 코드 돌릴 경우 시간복잡도 O(1), 코드 수행 시간 0.00ms !!

'CS > Coding Test' 카테고리의 다른 글

같은 숫자는 싫어  (0) 2021.08.22
나누어 떨어지는 숫자 배열  (0) 2021.08.22
문자열 내 p와 y의 개수  (0) 2021.08.21
문자열 다루기 기본  (0) 2021.08.21
서울에서 김서방 찾기  (0) 2021.08.21

블로그의 정보

코딩하는 오리

Cori

활동하기