[알고리즘] 두 정수 사이의 합

Cottonmycotton·2021년 10월 13일
0

Algorithm

목록 보기
26/44
post-custom-banner

문제 설명

두 정수 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의 대소관계는 정해져있지 않습니다.

입출력 예시

🖊 풀이

📌 Number.MAX_SAFE_INTEGER / Number.MIN_SAFE_INTEGER

  • 제한 조건에 따르면 인자로 받는 두 숫자 a, b의 대소관계가 정해져있지 않다(입출력 예시만 봐도 그렇다) 지난 포스팅에서 다뤄본 Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER를 이용해보았다.
  • 두 수의 범위를 구하기 전 대소관계를 정리하기 위해 변수 min의 초기값을 Number.MAX_SAFE_INTEGER 로 설정해주고 변수 max의 초기값은 Number.MIN_SAFE_INTEGER로 설정해둔다.

📌 Math.max() / Math.min()

  • Math.max는 전달받은 인수 중 가장 큰 수를 반환한다.
  • Math.min은 전달받은 인수 중 가장 작은 수를 반환한다.
  • 배열을 받을 시엔 아래와 같이 스프레드 문법을 사용해주면 편리하다.
Math.max(...[8, 9, 10]) // 10
  • 인자 a, b 중 최솟값과 최댓값을 구한다. 편의상 최솟값을 a, 최댓값을 b 라고 칭하겠다.
  • for문을 이용하여 a와 b범위의 숫자를 변수 i에 대입해준다.
  • answer에 i를 누적(더한 값)한 값을 리턴해준다.

💡 코드

function solution(a, b) {
  let answer = 0;
  let min = Number.MAX_SAFE_INTEGER;
  let max = Number.MIN_SAFE_INTEGER;

  min = Math.min(min, a, b);
  max = Math.max(max, a, b);

  for (let i = min; min <= max; min++) {
    answer += min;
  }

  return answer;
}

문제 출처: 프로그래머스

profile
투명인간
post-custom-banner

0개의 댓글