알고리즘(Algorithm)
프로그래머스 - 숫자의 표현 [JS]
Hun-bot
2023. 1. 30. 23:21
728x90
반응형
풀이
연속된 자연수들의 합으로 자연수 n을 만들어라
완전탐색 -> 시간 초과
1,2,3... 이런식으로 더해나가다가 n이 되면 count++
다음 숫자는 2부터 시작, 3부터 시작 ... 더해서 n이되면 count++, n (자기자신) count++
간단하게 이중 for문으로 구현
function solution(n) {
let count=0
for (let i = 1; i <= n; i++) {
let hap=0
for (let j = i; j <= n; j++) {
hap+=j
if(hap===n){
count++
break
}
else if(hap>n) break
}
}
return count
}
연속된 자연수
-> n이 15일때 연속된 자연수의 합 중 가장 큰 자연수(자기 자신 제외)의 조합은 7+8
즉, 최대 범위는 -> n/2
자기자신을 포함하기 때문에 count에 미리 1을 주고 풀었다
재귀와 합쳐서 만든 2번째 풀이 -> 통과
function solution(n) {
let count=1
const helper=(num,sum)=>{
if(sum===n) count++
else if(sum>n) return
return helper(num+1,sum+num)
}
for (let i = 1; i <= n/2; i++) {
helper(i,0)
}
return count
}
직관적인 풀이라고 생각되서 설명을 생략하겠다
728x90
반응형