일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 객체지향의 사실과 오해
- 도커
- 파이썬
- MSA
- 실행 컨텍스트
- 이벤트캡쳐링
- 10869번
- 코어자바스크립트
- 빅오표기법
- 우테코
- hoisting
- LeetCode
- v-if
- 이벤트버블링
- 프리코스
- 쿠버네티스
- JavaScript
- 10926번
- vue
- 배열파티션
- 2588번
- v-model
- 3003번
- v-on
- 백준
- DevOps
- 리스트복사
- v-for
- Python
- 젠킨스
Archives
- Today
- Total
새오의 개발 기록
프로그래머스: level 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) {
if (a === b) return a;
let sum = a;
while(a !== b) {
if (a < b ) a++;
if (b < a ) a--;
sum += a;
}
return sum;
}
다른 사람들의 풀이 1
역시 수학을 잘해야 알고리즘에 유리한가
가우스 공식 기억도 안 나는데 배우고 갑니다..
function adder(a, b){
var result = 0
return (a+b)*(Math.abs(b-a)+1)/2;
}
가우스 덧셈 이란
- 가우스가 선생님께 가져온 계산법은 이러했다.
- 첫 숫자 1과 끝 숫자 100을 더하면 101 이 된다
두 번째 숫자 2와 끝 숫자 99를 더하면 101 이 된다.
...
모두 합하여 101은 모두 50번이 된다.
앞의 숫자와 뒤의 숫자를 더하면 모든 쌍의 합이 101이나 오며,
그 개수는 전체 개수의 절반인 50개가 됨
가우스 덧셈 공식 정리
a ~ b까지의 숫자를 더한 합은?
처음 숫자와, 마지막 숫자를 더한 합 = ( a + b )
더할 숫자의 개수 총합의 1/2 = ( b - a + 1) * 1/2
= ( a + b ) * ( b - a + 1) * 1/2
다른 사람들의 풀이 2
function adder(a, b, s = 0){
for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
return s;
}
Math를 잘 사용해봐야겠다..
1번 풀이 같은 경우는 사실 내가 못 떠올릴 것 같고 2번 풀이가 더 와닿는다.