관리 메뉴

공부기록용

프로그래머스(LV 1. 두 정수 사이의 합) 본문

✍️문제풀기✍️/JS_Programmers school

프로그래머스(LV 1. 두 정수 사이의 합)

과부하가즈아 2023. 6. 16. 12:26

LV 1. 두 정수 사이의 합

https://school.programmers.co.kr/learn/courses/30/lessons/12912

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

두 정수 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 = 3 / 3 / 5
  • b = 5 / 3 / 2
  • return = 12 / 3 / 12
문제를 이해는 했는데 어떻게 방향을 잡아야 할지 몰랐다....ㅎ

>그래서 일단 a < b, a = b, a > b로 나눠서 생각했고 for문을 활용해야겠다고 생각했다.
>우선, for문을 사용하려고 했을때 i는 작은 수 부터시작, i는 큰 수 보다 작거나 같을때까지, 반복한다 라는 조건을 생각했다.
그리고 a < b, a = b, a > b로 나누면 
a < b 일때, 
for(let i = a; i <= b; i++){
	answer = answer += i
}

 

a > b
for(let i = b; i <= a; i++){
	answer = answer += i
}​

까지 생각했고, a=b일 경우에는 위 두 경우에 같이 넣으면 되지 않을까 생각했다.

그래서 합쳐서

function solution(a, b) {
    var answer = 0;

    if (a < b) {                       
        for (let i = a; i <= b; i++) {  
            answer = answer += i       
        }
    } else if (a >= b) {                
        for (let i = b; i <= a; i++) {  
            answer = answer += i       
        }
    }
    
    return answer;
}
console.log(solution(3,5))

이렇게 해결해 볼 수 있었다.


function solution(a, b) {
    let answer = 0;
    
    for(let i = Math.min(a, b); i <= Math.max(a, b); i++) {
    	answer = answer + i;
    }
    
    return answer;
}
function adder(a, b){
    var result = 0
    return (a+b) * (Math.abs(a-b)+1) / 2;
}
Comments