프로그래머스 풀이/level1

[Programmers] level 1) 문제 '두 정수 사이의 합' 풀이

진기명기 2023. 5. 12. 15:27
🫠 Programmers (level 1) 👉🏻 문제 12번 (두 정수 사이의 합)

✏️ 문제 설명
두 정수 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

 

 

 

 


function solution(a, b) {
  // for문 범위 값을 위한 배열 생성
  let arr = []
  arr.push(a, b)
  arr.sort((a,b) => a-b)
    
  let res = []
  for(let i = arr[0]; i <= arr[1]; i++) {
      res.push(i)
  }
  return res.reduce((acc, item) => acc + item, 0)
}
✅ sort()를 통해 오름차순을 하여 순서를 정렬
✅ for문의 범위값으로 오름차순 했던 배열을 사용 (arr[0]번째가 더 작은 수!)
✅ reduce()로 배열 값 모두 더해줌!

 

 

💡 확인할 점

🫠 나는 sort()로 a, b의 값을 비교했지만, 아래처럼 하면 더 쉬울 것 같다..! Math를 쓸까도 고민했지만 배열을 만들어 내 눈으로 확인해서 값을 대입하는 게 더 편했다(왜일까,, 코드만 더 길어질 뿐인데..!)

// 1번 방법
for(let i = Math.min(a,b); i <= Math.max(a,b); i++) {
   res.push(i)
}

// 2번 방법
{
...
let s = 0
  for(let i = Math.min(a,b); i <= Math.max(a,b); i++) {
      s += i
  }
  return s
}
💡 Math.min() & Math.max()로 값 비교하여 for문에 값을 넣어도 좋다!
💡 1번 방법과 같지만 임의의 숫자값 s를 만들어 계속 더해줘도 된다.