반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
- i는 끝까지(n) 가면 비효율적이므로, Math.floor(n / 2) 까지만 가도록 작성하였음
- answer = 1 ⇒ n은 무조건 포함되는데, i는 n까지 가지 않으므로 처음부터 n을 포함하고 시작함
function solution(n) {
let answer = 1;
const endNum = Math.floor(n / 2)
for(let i = 1; i <= endNum; i++){
let sum = 0;
for(let j = i; j <= n+1; j++) {
sum += j
if(sum === n) answer++;
if(sum > n) break;
}
}
return answer;
}
다른 풀이
Point : { n - (1부터 i까지의 합) } 을 i로 나눴을 때 나머지가 0이다.
function solution(n) {
let answer = 0;
let i = 0;
while(n > 0){
i++;
if(n % i === 0) answer++;
n -= i;
}
return answer;
}
반응형
'CS > 알고리즘' 카테고리의 다른 글
[230326] 영어 끝말잇기 (0) | 2023.03.26 |
---|---|
[230326] 다음 큰 숫자 (0) | 2023.03.26 |
[230325] 3진법 뒤집기: parseInt, toString (0) | 2023.03.26 |
[230325] 이진 변환 반복하기 (0) | 2023.03.26 |
[230325] 최솟값 만들기 (0) | 2023.03.26 |