[프로그래머스] 두 정수 사이의 합 (for, Math.min, Math.max)

조아연·2024년 7월 16일

JavaScript 공부

목록 보기
18/24

JavaScript 코딩테스트 두 정수 사이의 합 (22일)

두 정수 사이의 합

보자 마자 for문이라는 감이 왔다.

 

첫번째 답

function solution(a, b) {
    var answer = 0;
    for (let i = 0; i <=b; i++); {
        if (a <= i <=b) {
        answer += i;
        }
    }
    return answer;
}

 

하지만 오류가 나서 수식 자체는 맞는것 같은데 코드 입력 방법이 틀린 것 같아서 gpt에게 물어봤다.

  • for 루프의 세미콜론(;): 세미콜론(;) 뒤에 중괄호({)가 오는 형식으로 for문이 바로 종료
  • if 문의 조건식 if (a <= i <= b) : javascript에서는 지원하지 않는 방식, if (a <= i && i <= b) 표기가 옳음

 

두번째 답

function solution(a, b) {
    var answer = 0;
    for (let i = 0; i <= b; i++) {
        if (a <= i && i <= b) {
        answer += i;
        }
    }
    return answer;
}

테스트 1,2번을 통과했다!
3번의 경우 for문과 if문에서 비교연산자로 코딩을 해서 잘못된 기댓값이 나오는 것 같았다.

b또는 a로 체크될려면 숫자를 통한 비교가 아니라 a부터 b까지의 범위의 값으로 체크해보기로 했다.

 

세번째 답

function solution(a, b) {
    var answer = 0;
    for (let i = Math.min(a,b); i <= Math.max(a,b); i++) {
        answer += i;
    }
    return answer;
}
  • Math.min(a,b) : a와 b중 작은 숫자를 선택
  • Math.max(a,b) : a와 b중 큰 숫자를 선택

위 매서드로 수정하니 if문도 필요 없이 코딩이 가능했다.

아래 매서드로 수정하니 if문도 필요 없이 코딩이 가능했다.

 

 

다른 사람 풀이

다른 사람의 풀이도 참고 했다.
가우스 공식을 통해서 푼 사람도 있더라..

function solution(a, b)
{ return (a + b) * (Math.abs(b - a) + 1) / 2; } 가우스공식

깨달은 점

  • Math.abs() 함수 : 주어진 숫자의 절대값을 반환하는 JavaScript의 내장 함수
profile
비전공자 QA의 자기개발 공부노트

0개의 댓글