오늘은 알고리즘 문제풀이를했다
두 정수 a,b가 주어졌을때 a,b사이에 속한 모든 정수의 합을 리턴하는 함수를 완성하라
ex) a = 3 , b = 5인 경우 3과 5사이에 4까지 포함해서 더한 숫자 12를 return해야함
function solution(a, b) {
let answer = 0;
if (a <= b) {
for (let i = a; i <= b; i++) {
answer = answer + i
}
}else {
for (let j = b; j <= a; j++) {
answer = answer + j
}
}
return answer;
}
여기서 a = 3이기때문에 당연히 b와 비교했을때 작을수밖에 없다 그러므로 a의 값이 b와 같이지는
5가 될때까지 반복할수있게 반복문을 작성하고 3,4,5는 i의 값이된다 그러면
i는 3+4+5가되므로 12를 return하게된다.
마찬가지로 else문은 a = 5이고,b = 3일경우에 5+4+3 을 출력하여 12를 return할수있게 작성하였다.
알고리즘 5번문제에서 내가 작성한 코드는 굉장히 길지만 이를 간추린 정말 간단하고 완벽한 코드가 있어서 아래의 적어 놓으려고한다.
function solution(a, b) {
let result = 0;
return (a+b)*(Math.abs(b-a)+1) / 2;
}
이 코드에서 나오는 Math.abs는 무엇일까??
Math객체는 수학에서 자주 사용하는 상수(수식에서 변하지않는 값을 뜻함)와 함수들을 미리 구현해 놓은 자바스크립트 표준내장객체이다.
Math.abs는? ⇒ 주어진 숫자의 절대값을 반환한다. (아래 내용 참고)
Math.abs()의 작동 방식
빈 객체, 하나 이상의 요소를 가진 배열, 숫자가 아닌 문자열, undefined나 빈 매개변수를 받으면 NaN을 반환합니다. null, 빈 문자열이나 빈 배열을 제공하면 0을 반환합니다.
Math.abs('-1'); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1,2]); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN