알고리즘_두 정수 사이의 합

정재연·2022년 1월 14일
0

알고리즘

목록 보기
1/23

두 정수 사이의 합

1.문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

2.제한 조건

a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져있지 않습니다.

3.입출력 예

abreturn
3512
333
5312

4.나의 문제풀이

문제를 받고 생각한 순서

  1. a,b의 대소를 구분해야겠다
    (문제에서 대소구분하지 말랬는데...😂여기서 이미 힌트가 있었나보다)
    비교 연산자를 사용하여 a,b의 대소를 구분하였다.
  if(a > b) {}else {}
  1. a,b 사이의 값을 찾아야 겠다.
    for 문을 사용해서 a,b 사이의 값을 찾고자 했다.
	answer = 0;
  	if(a > b) {
  		for ( let i = b; i <= a ; i++){
    		return answer += i;
    	}
	}else {
    	for ( let i = b; i <= a ; i++){
    		return answer += i;
    	}
    }

5.다른 사람의 풀이

	
  function solution (a,b){
    let answer = 0
    return (a+b)*(Math.abs(b-a)+1)/2
  }

오호~ 한 줄로 끝내버렸다.
수학으로 저렇게 풀수 있구나 대단함...

let a = 3
let b = 9

console.log(a+b);				//12
console.log(Math.abs(b-a)+1);			//7
console.log((a+b)*(Math.abs(b-a)+1)/2)		//42
console.log(3+4+5+6+7+8+9);			//42
    

가우스 공식으로 풀었다.

찾다보니 다른 풀이 법도 있었다.

function solution(a, b, answer = 0) {
  for (var i = Math.min(a, b); i <= Math.max(a, b); i++) 	answer += i;
  return answer;
}

Math를 이용한 풀이 법이 많았다.

6.문제를 풀면서 느낀점

처음에는 sort로 a,b 대소를 구분하려다가, if문으로 했었는데 차근차근 하다보면서 발전하겠지란 생각을 했다.
또, 다양한 풀이 법들이 많았다. 하나하나 다 이해하려다간 늙을 것 같아서
저런게 있구나 하고 넘겼다. 정말 세상엔 똑똑이들이 많구나 그거하난 확실하다.
알고리즘을 간결하게 풀기 위해서는 수학적인 머리가 있으면 매우 유리하다고 생각 했다.
내가 작성할 수 도 있지만, 다른 사람이 작성할 코드를 이해 못해서 구글링 하는 시간이 또 생기니까~

profile
코린이 개발자 :)

0개의 댓글