Algorithm/프로그래머스

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

햄습햄 2021. 10. 31. 00:21

문제 설명

 

두 정수 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가 같은지 확인 후, 같다면 a를 반환했다.

 

a와 b 값을 비교하여 작은 값은 i에 큰 값은 j에 넣었다.

그리고 작은 값 i부터 큰 값 j까지 while 문을 돌면서 answer에 값을 더했다.

while 문이 끝나고, 마지막에 answer를 반환했다.

 

 

결과

 

 


다른 사람의 풀이

 

Math를 이용해 a와 b 중 최솟값, 최댓값을 각각 구했다.

sumAtoB라는 메서드를 호출했고, 구해둔 최솟값, 최댓값을 각각 argument로 넘겼다.

 

sumAtoB는 등차수열의 합 공식을 이용했다.

(이를 이용하면 a부터 b까지의 합을 일일이 더하는 것보다 훨씬 빠르게 계산할 수 있다.)

등차수열의 합을 통해 나온 값을 반환했다.

 

 

기타

 

학생 때 배우던 등차수열의 합 공식을 이용해서 문제를 풀어서 놀랐다. 부끄럽지만 다른 사람의 풀이를 봤을 때에도 저게 등차수열의 합인지 기억하지 못했다. '이런 것도 있었지' 정도의 기억만 났다. 간만에 등차수열에 관해서 공부를 했다. 속도는 for 문을 돌릴 때와는 비교할 수 없을 정도로 빨랐다. 굉장히 깔끔하고, 멋있는 답이라고 생각한다.