본문 바로가기
내일배움 과제/기타 과제

알고리즘 22번 두 정수 사이의 합

by GREEN나무 2024. 11. 27.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12912

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

JS

문제

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


계획

if (a===b){

   return a

}else{큰값을 big, 작은값을 small에 넣기

for문으로 작은값 ~큰값 사이의 수의 합을 구합니다.

합을 리턴


참고, 풀이

function solution(a, b) {
  let big = 0;
  let small = 0;
  let sum = 0;
  if (a === b) {
    return a;
  } else if (a > b) {
    big = a;
    small = b;
  } else {
    big = b;
    small = a;
  }

  for (let i = small; i <= big; i++) {
    sum += i;
  }
  return sum;
}

 

최댓값 찾기 Math.max(숫자)

console.log(Math.max(-1, -3, -2));
// Expected output: -1

const array1 = [1, 3, 2];

console.log(Math.max(...array1));
// Expected output: 3

 

최솟값 찾기 Math.min

console.log(Math.min(-2, -3, -1));
// Expected output: -3

const array1 = [2, 3, 1];

console.log(Math.min(...array1));
// Expected output: 1

 

등차수열의 합 공식 : (max-min+1)*(max+min)/2


function solution(a, b) {
  let big = 0;
  let small = 0;
  let sum = 0;
  if (a === b) {
    return a;
  } else {
    big = Math.max(a,b)
    small =  Math.min(a,b)
  }
  return ((big - small + 1) * (small + big)) / 2;
}

코드 간략화하기

function solution(a, b) {
  const [small, big] = a < b ? [a, b] : [b, a];
  return ((big - small + 1) * (small + big)) / 2;
}

 

구조분해 할당

let a, b, rest;
[a, b] = [10, 20];

console.log(a); //10
console.log(b); // 20


[a, b, ...rest] = [10, 20, 30, 40, 50];

console.log(rest); // [30, 40, 50]

출처 

Math.max : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max

Math.min : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/min

등차수열의 합 : https://blog.naver.com/ssooj/222690714757

구조 분해 할당 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment