[코드조각] 1부터 n까지의 합 구하기

2019. 9. 26. 15:20프론트엔드 개발/JS & TS

1부터 n까지 합을 구하는 스니펫을 여러가지 방법으로 짜봤습니다.

1. for문

for문을 이용한 가장 간단한 방식입니다. 시간복잡도는 O(n)입니다.

const sum=n=>{
  let answer=0;
  for(let i=1;i<=n;i++){
    answer += i;
  }
  return answer;
}

2. 재귀함수

for문을 재귀함수 방식으로 변경했습니다. 시간복잡도는 동일하게 O(n)입니다.

const sum=n=> {
  if(n===1) {return 1}
  return n+sum(n-1);
}

3. 수학적인 방법 사용

중고등학교때 배웠던 가우스의 유명한 일화가 있습니다. 1+2+..+(n-1)+n를 빠르게 푸는 방법으로 ((1+n)*n)/2를 활용하는 것입니다.
시간복잡도는 O(1)으로 세 가지 방법 중 가장 빠릅니다.

const sum=n=>{
  return n*(n+1)/2;
}

이밖에 다른 방법을 알고 있거나 더 효율적인 코드를 아신다면 댓글로 달아주세요. 많은 분들에게 큰 도움이 될 거에요.

도움이 되셨다면 좋아요와 댓글 부탁드립니다. 감사합니다~