반응형
[처음 푼 풀이]
if(a === b){return a}
else{ return a + b + ...? }
처음에 풀이를 if - else 를 이용해서 풀어보려고 했음
하지만 위 풀이와 같이 a 와 b 사이에 있는 값의 합을 구할 수가 없음
결과값은 a + (a+1) + (a+2) + ... + b 이고 계속 1씩 증가하기 때문에 for문을 돌려야겠다고 생각함!
[예시]
const arr = [1, 2, 3, 4];
let sum = 0;
for(let i = 0; i < arr.length; i++){
sum += arr[i];
}
return sum;
예시처럼 배열안의 값을 더할 때는 sum에 arr[0] , arr[1] , ... 반복하면서 값을 누적시켜 더해주는 것
하지만, 문제에서는 배열을 만들기 어려운 상태이기 때문에 변형해서
Math.max() 와 Math.min()을 이용해서 for문을 돌려주면 된다.
[풀이]
function solution(a, b) {
const maxNumber = Math.max(a, b);
const minNumber = Math.min(a, b);
let sum = 0;
for (let i = minNumber; i <= maxNumber; i++) {
sum += i;
}
return sum;
}
1. a 와 b 사이 최대값, 최소값을 구해줌
2. for문 안에서 i 는 최소값으로 설정하고 최대값범위 까지 설정후 for문을 돌려줌
3. sum 에는 최소값부터 최대값까지의 숫자가 누적해서 더해질 것
[최대값, 최소값 구하기]
- Math.max() : 파라미터로 입력받은 숫자들 중 최대값을 구해줌
- Math.min() : 파라미터로 입력받은 숫자들 중 최소값을 구해줌
배열에서 최대값, 최소값을 구할 때는 배열의 원소들을 하나씩 꺼내서 Math.max(), Math.min() 함수의 인자로 전달하면 됨
이렇게 하기 위해서 Function.prototype.apply() 메소드를 이용하기와 Spread Operator(전개 연산자)를 이용하면 됨
두가지 방법은 다음장에서 설명!
'코딩 테스트 > Programmers - 1' 카테고리의 다른 글
[JS] 예산 (0) | 2022.09.21 |
---|---|
[JS] 나누어 떨어지는 숫자 배열 (1) | 2022.09.21 |
[JS] 부족한 금액 계산하기 (1) | 2022.09.21 |
[JS] 소수 찾기 (0) | 2022.09.04 |
[JS] 문자열 내림차순으로 배치하기 (0) | 2022.08.28 |