
문제
두 숫자 a, b 사이의 모든 정수의 합을 계산해라
내 코드 풀이
function solution(a, b) {
let sum = 0;
if (a <= b) {
for (let i = a; i <= b; i++) {
sum += i;
}
} else {
for (let i = a; i >= b; i--) {
sum += i;
}
}
return sum;
}
- for문을 사용해 a와 b 중 큰 수를 확인후 이에 따라 for 루프를 사용하여 합을 계산한다
코드 리팩토링 1
function solution(a, b) {
let sum = 0;
let start = Math.min(a, b);
let end = Math.max(a, b);
for (let i = start; i <= end; i++) {
sum += i;
}
return sum;
}
1. start와 end 변수를 사용하여 시작값과 종료값을 결정한다
- Math.min 과 Math.max 함수를 사용하여 두 값을 정렬한다
2. for 문을 사용해 작은 숫자에서 큰 숫자로 진행한다
코드 리팩토링 2
function solution(a, b) {
return (a + b) * (Math.abs(b - a) + 1) / 2;
}
a와 b 사이 모든 정수의 합을 계산하는 수학적인 공식 사용
1. Math.abs(b - a ) + 1
- 이 부분은 주어진 a와 b 사이에 있는 숫자의 개수를 나타낸다
- Math.abs 함수는 절대값을 반환하는 함수로, 두 숫자 a,b 차이를 절대값으로 만들어 양수로 변환한다 그 다음 +1 하여 a 와 b 사이의 숫자의 개수가 된다
2. (a + b)
- a와 b를 더한 값으로 이는 등차수열의 첫번째 항과 마지막 항을 더한 값
3. / 2
- 최종 결과값을 2로 나눈다. 등차수열 합을 계산하는 공식에서 사용되는 상수 2를 나누기 때문
수포자라 슬프다... 하수 코드 for문만 생각나는 바보 ..
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
| javascript 무작위 정수 배열 중에서 n으로 나누어 떨어지는 숫자의 배열 생성 (1) | 2023.10.18 |
|---|---|
| javascript 배열 내 없는 숫자 더하기 (1) | 2023.10.18 |
| Palindrome Number (0) | 2023.10.04 |
| javascript 2차원 배열 내 리스트에 id, pw가 있는지 찾고 일치 여부에 따른 메세지 반환 (3) | 2023.09.12 |
| javascript 배열 중복 제거후 변수 k의 길이만큼 자르거나 채우는 방법 (0) | 2023.09.11 |