알림
본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12924
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러 개라는 사실을 알게 되었습니다.
예를 들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
1 + 2 + 3 + 4 + 5 = 15
4 + 5 + 6 = 15
7 + 8 = 15
15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
코드
// 효율성 테스트 불통과
function solution(n) {
let answer = 0;
for(let i = 1; i <= n; i++){
let sum = 0;
for(let j = i; j <= n; j++){
sum += j;
if(sum == n) answer++;
}
}
return answer;
}
// 효율성 테스트 통과
function solution(n) {
let answer = 0; // 정답(카운트 된 수)
let sum = 0; // 누적값
for(let i = 1; i <= n; i++){
for(let j = i; j <= n; j++){
sum += j;
// 누적값 = 매개변수 n
if(sum == n){
answer++; // 정답 카운트
sum = 0; // 초기화
break;
// 매개변수보다 커질 시
}else if(sum > n){
sum = 0; // 초기화
break;
}
}
}
return answer;
}
풀이
첫 번째 코드는 시간 초과로 효율성 테스트를 통과하지 못 했습니다.
아무래도 반복문이 돌 때마다 변수를 선언해줘 그런 것 같아, 변수를 밖에다 선언하고 조건문을 추가해 줬습니다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 줄 서는 방법(JavaScript) (0) | 2022.08.10 |
---|---|
[Programmers] 올바른 괄호(JavaScript) (0) | 2022.08.09 |
[Programmers] 소수 찾기(JavaScript) (0) | 2022.08.09 |
[Programmers] 큰 수 만들기(JavaScript) (0) | 2022.08.08 |
[Programmers] 다음 큰 숫자(JavaScript) (0) | 2022.08.06 |
댓글