Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 타입스크립트
- IT교육
- API 명세서
- 네이버커넥트재단
- 코딩강의
- 대외활동
- 무료코딩교육
- NCP
- AI코칭스터디
- 코딩스터디
- 깃허브
- 리액트
- MySQL
- 프로그래머스
- 코드프레소
- codepresso
- reduce()
- git
- 슥삭
- 자바스크립트
- GitLab
- 코딩이러닝
- 마크다운
- 네이버클라우드플랫폼
- 매직메서드
- markdown
- 코딩테스트
- 엘라스틱서치
- 무료IT교육
- Elastic Search
Archives
- Today
- Total
개발하는 무민
[프로그래머스-Level2] 숫자의 표현_JavaScript 본문
숫자의 표현
문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
제한사항
- n은 10,000 이하의 자연수 입니다.
n result
15 | 4 |
풀이
// 주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수와 주어진 수의 홀수인 약수 갯수는 같다는 공식을 사용
// 문제의 예시로 들어보자면, 15의 약수는 1, 3, 5 ,15 이고, 홀수는 4개임
// 약수 1 -> 연속하는 1개 자연수의 합으로 표현 가능, 15 = 15
// 약수 3 -> 연속하는 3개 자연수의 합으로 표현 가능, 15를 3으로 나눈 값인 5로 표현 가능하다. 5+5+5 = 15 => 3+4+5 = 15
// 약수 5 -> 연속하는 5개 자연수의 합으로 표현 가능, 15를 5로 나눈 값인 3으로 표현 가능하다. 3+3+3+3+3 = 15 => 1+2+3+4+5 = 15
// 약수 15 -> 모든 홀수(2n+1)는 n과 n+1로 표현 가능
// 이러한 공식에 기반하여 15를 연속된 자연수의 합으로 표현하는 방법의 수(return값)는 15의 홀수인 약수의 갯수 4와 같다.
// 이 공식을 통해 빠른 속도로 실행 가능한 코드를 짤 수 있다.
function solution(n) {
let answer = 0;
for(let i=0; i<=n; i++){ //입력한 자연수의 값만큼 반복하는 반복문
if(n%i === 0 && i%2 === 1){ // 입력받은 자연수를 i로 나누어서 해당 값이 0이고(약수), 홀수(i%2)라면
answer = answer + 1; //방법의 수를 1 증가시킴
}
}
return answer;
}
주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수와 주어진 수의 홀수인 약수 갯수는 같다는 공식을 사용
문제의 예시로 들어보자면, 15의 약수는 1, 3, 5 ,15 이고, 홀수는 4개임
약수 1 -> 연속하는 1개 자연수의 합으로 표현 가능, 15 = 15
약수 3 -> 연속하는 3개 자연수의 합으로 표현 가능, 15를 3으로 나눈 값인 5로 표현 가능하다. 5+5+5 = 15 => 3+4+5 = 15
약수 5 -> 연속하는 5개 자연수의 합으로 표현 가능, 15를 5로 나눈 값인 3으로 표현 가능하다. 3+3+3+3+3 = 15 => 1+2+3+4+5 = 15
약수 15 -> 모든 홀수(2n+1)는 n과 n+1로 표현 가능
이러한 공식에 기반하여 15를 연속된 자연수의 합으로 표현하는 방법의 수(return값)는 15의 홀수인 약수의 갯수 4와 같다.
이 공식을 통해 빠른 속도로 실행 가능한 코드를 짤 수 있다.
-> 즉 문제를 빠르게 풀 수 있는 공식을 찾는 것이 중요함
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스-Level1] 정수 제곱근 판별_JavaScript (0) | 2022.06.02 |
---|---|
[프로그래머스-Level1] 제일 작은 수 제거하기_JavaScript + splice() (0) | 2022.06.01 |
[프로그래머스-Level2] 피보나치 수_JavaScript + 모듈러 연산 (0) | 2022.05.26 |
[프로그래머스-Level1] 짝수와 홀수_JavaScript + 삼항연산자 (0) | 2022.05.25 |
[프로그래머스-Level1] 콜라츠 추측_JavaScript (0) | 2022.05.20 |