231123 TIL

chillakilla·2023년 11월 23일

두 정수 사이의 합

Q : 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

입출력 예

솔루션 코드

  • 솔루션 코드를 뜯어보기 전에 앞서, 이번엔 틀렸던 코드를 한 번 뜯어봄이 필요할 것 같다.
<script>
const solution = (a, b) => {
  let answer = 0;

  for (let i = a; i <= b; i++) {
    answer += i;
  }
  return answer;
};

</script>
  • 그냥 슬쩍 봤을 때는 거기서 거기 같아 보일 수도 있지만, 입출력 예를 대입해보면 틀린 것이 확인된다.
  • 이 코드의 문제는 a, b에서 a 의 숫자를 더 크게 입력 받았을 때는 성립하지 않는다는 거다.
  • 왜냐면 i = a; i <= b; 라고 했기 때문.
  • console.log를 이용해, (a, b) 에 3, 5 / 3, 3 를 대입했을 땐 정답 도출이 가능하지만
  • 5, 3 을 대입했을 땐 0이라는 숫자가 나와버린다.

그렇다면 솔루션 코드는?

<script>
const solution = (a, b) => {
  let answer = 0;

  for (let i = Math.min(a, b); i <= Math.max(a, b); i++) {
    answer += i;
  }
  return answer;
};
</script>
  • 일단은 서칭을 통해 지식을 얻었다. Math.min, Math.max를 사용하는 방법이다.
  • Math.min 을 사용해, a, b 어느 값을 입력 받든 작은 수를 i 에 할당할 수 있다.
  • 뒤의 수식 역시 Math.max를 사용해, 어느 값을 입력 받은 큰 값을 반환하여 i 에 할당시킬 수 있다.
  • 그렇게 for 문을 돌아나온 i 를 모두 더해서 answer로 반환. 답안 도출에 성공했다.

Math.min / Math.max

Math.min() / Math.min() 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.

  • 매개변수
    value1, value2, ...
    숫자형

  • 반환 값
    주어진 숫자들 중 가장 작은 값. 만약 적어도 1개 이상의 인자값이 숫자형으로 변환이 불가능 한 경우 이 함수는 NaN 를 반환 합니다.

  • 예시

<script>
var x = 10,
  y = -20;
var z = Math.min(x, y);
</script>

Math.max() / Math.max() 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.

  • 매개변수
    값1, 값2, ...
    가장 큰 값을 선택하고 반환할 0개 이상의 숫자입니다.

  • 반환 값
    입력된 숫자 중 가장 큰 숫자를 반환합니다. 만약 인수 중 하나라도 숫자로 변환하지 못한다면 NaN로 반환합니다. 매개변수를 제공하지 않은 경우 결과는 -Infinity입니다.

  • 예시

<script>
Math.max(10, 20); //  20
Math.max(-10, -20); // -10
Math.max(-10, 20); //  20
</script>
profile
꾸준하려 하는 쉽덕놈

0개의 댓글