[프로그래머스] Lv.1 두 정수 사이의 합
문제 설명
두 정수 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) {
let result = 0;
if (a === b) {
return a;
}
if (a < b) {
for (let i = a; i <= b; i++) result += i;
return result;
}
if (a > b) {
for (let i = a; i >= b; i--) result += i;
return result;
}
}
의사코드
// 1. a와 b 대소관계를 판단한다.
// 2. a = b 같은경우 return a
// 3. a < b 경우, 인자 a부터 +1해서 인자 b가 될 때까지 증가시킨다.
// 4. 초깃값은 a로 설정, i는 b보다 작거나 같을 때 까지 증가하여 합을 리턴한다.
// 5. 반대로 a > b 경우, 인자 a부터 -1해서 인자 b가 될 때까지 감소.
// 6. 초깃값은 a로 설정, i는 b보다 크거나 같을 때 까지 감소하여 합을 리턴한다.
다른 사람의 풀이
function solution(a, b) {
var answer = 0;
let min = Math.min(a, b);
let max = Math.max(a, b);
for(let i=min; i<=max; i++) answer+=i;
return answer;
}
다른 사람의 풀이를 보니 Math 메서드로 간결하게 작성하였다.
Math.max 메서드는 전달받은 인수 중에서 가장 큰 수를 반환한다. 인수가 전달되지 않으면 -infinity를 반환한다.
Math.max(1); // -> 1
Math.max(1,2); // -> 2
Math.max(1, 2, 3) // -> 3
Math.max()// -> infinity
//배열 요소 중에서 최대값 취득
Math.max.apply(null,[1, 2, 3]);// -> 3
//스프레드 문법
Math.max(...[1, 2, 3]); // -> 3
Math.min 메서드는 전달받은 인수 중에서 가장 작은 수를 반환한다. 인수가 전달되지 않으면 infinity를 반환한다.
Math.min(1); // -> 1
Math.min(1,2); // -> 1
Math.min(1, 2, 3) // -> 1
Math.min()// -> infinity
//배열 요소 중에서 최소값 취득
Math.min.apply(null,[1, 2, 3]);// -> 1
//스프레드 문법
Math.min(...[1, 2, 3]); // -> 1
'Daily coding' 카테고리의 다른 글
[프로그래머스] Lv.1 시저 암호 (0) | 2022.07.12 |
---|---|
[프로그래머스] Lv.1 2016년 (0) | 2022.07.11 |
[프로그래머스] Lv.1 나누어 떨어지는 숫자배열 (0) | 2022.06.27 |
[프로그래머스] Lv.1 핸드폰 번호 가리기 (0) | 2022.06.21 |
[프로그래머스] Lv.1 서울에서 김서방 찾기 (0) | 2022.06.20 |