본문 바로가기
알고리즘/JavaScript

프로그래머스 / 코딩 기초 트레이닝 / 홀짝에 따라 다른 값 반환하기

by Krystal K 2023. 9. 17.

홀짝에 따라 다른 값 반환하기

 

문제 설명
양의 정수 n이 매개변수로 주어질 때, 

n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고

 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ n ≤ 100


[ 내가 푼 방식 ]

 

사실 홀수의 합은 공식을 모르는 상태에서 직접 규칙성을 발견해 코드를 작성했다.

 

check point!

n이하의 홀수들의 합에 대해 내가 찾은 규칙

n이하의 홀수들의 갯수 = n /2 + 1

홀수들의 합 = 홀수들의 갯수의 제곱

 

짝수도 동일한 방법으로 규칙을 찾아보려고 했지만 실패했다.

그래서 짝수들의 제곱의 합은 반복문으로 작성했다.

그런데 반복문으로 작성하니까 확실히 처리 속도가 떨어진다.

 

[다른 사람들이 푼 방식]

다른 사람들이 작성한 코드들을 찾아보다가 신기한 방식을 찾았다.

반복문을 전혀 사용하지 않고 수학 공식으로 해결한 사례이다.

이 공식이 궁금해서 검색해보니 아래의 글을 찾았다.

 

check point!

반복문 대신 공식으로 문제 풀기

 

자연수 제곱의 합

https://blog.naver.com/PostView.naver?blogId=mslsj2000&logNo=222838511773&parentCategoryNo=&categoryNo=38&viewDate=&isShowPopularPosts=true&from=search 

 

어제 발견한 새로운 유도방법-"자연수의 제곱의 합 공식"

자연수의 제곱의 합 공식은 다음과 같다. 이 공식을 유도하는 방법은 꽤나 복잡하고 번거롭다. 수능 공부할...

blog.naver.com

홀수들의 합 공식

1~n까지의 자연수가 있을 때 n이 짝수일 경우, ( n / 2 )²

1~n까지의 자연수가 있을 때 n이 홀수일 경우, ( ( n + 1 ) / 2 )²

 

짝수들의 합 공식

1~n까지의 자연수가 있을 때 n이 짝수일 경우, n² + n

1~n까지의 자연수가 있을 때 n이 홀수일 경우, (n-1)² + (n-1)

 

자연수 제곱의 합 공식

1~n까지의 자연수가 있을 때 이 자연수들의 제곱의 합은 n(n+1)(2n+1)/6이다.

그리고 자연수들의 제곱의 합은 홀수들의 제곱의 합 + 짝수들의 제곱의 합과 같다.

 

홀수들의 제곱의 합 공식

(n * (4n^2 - 1)) / 3

 

짝수들의 제곱의 합 공식

 

n*(n+1)*(n+2)/6

 

 

[ 내가 다시 풀어본 방식 ]

위의 공식들을 이용해서 반복문 없이 코드를 작성해보았다.

확실히 처음에 작성했던 반복문이 들어간 코드보다 처리 속도가 빨라졌다.

수학 공식만 알고 있었어도  반복문을 쓰는 번거로운 방식을 사용하지 않고 빨리 풀 수 있는 문제였는데 아쉽다.

수학 공부 다시 시작해야 하나...

그래도 홀수 합 구하는 공식은 몰랐지만 규칙성을 가지고 내가 공식을 만들어낸(사실은 찾아낸)것이 기특하기도 하다.

 

 

[ 추가적으로 변수 선언 안하고 바로 조건문으로 작성했을 때 비교 ]

여기서 변수 선언 안하고 바로 삼항 연산자 조건문으로 풀어버리면 처리속도가 더 빠르긴한데 코드 가독성을 생각하면 변수로 값을 관리하는 것이 더 좋은 코드 같기도 하다.

728x90