프로그래머스: 두 정수 사이의 합
in Algorithm
프로그래머스 ‘두 정수 사이의 합’ 문제.
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수
나의 해결방안
case1
function solution(a, b) {
var answer = 0;
if(a-b > 0){
for(let i=b; i<=a; i++){
answer += i
}
}else{
for(let i=a; i<=b; i++){
answer += i
}
}
return answer;
}
- a와 b의 크기를 비교해서 어떤수를 초기값으로 지정해줄지 생각
- a가 b보다 더 큰숫자이면 a-b가 0보다 크므로 초기값은 b가 되어야 함
- 아닌 경우는 a를 초기값으로 지정
case 2
function solution(a, b) {
var answer = 0;
if( a === b){
return a;
}else{
//최솟값
//반복문이 실행될 때, 설정되는 초깃값(a와b중에서 더 작은 수가 들어온다
// const start = a > b ? b : a
const start = Math.min(a,b)
//최댓값
//반복문이 종료되는 조건을 설정(a와 b중에서 더 큰 수가 들어온다
// const end = a > b ? a : b
const end = Math.max(a, b);
for(let i = start; i<= end; i++){
answer += i;
}
}
return answer;
}
CASE 3 (메서드 사용)
function solution(a, b) {
if(a === b) return a;
const start = Math.min(a,b);
const end = Math.max(a,b);
const answer = new Array(end -start).fill(1).reduce((a,b,i)=>{
const num = (start+b)+i
return a + num
}, start);
return answer;
}