-
문제
https://www.acmicpc.net/problem/2018
2018번: 수들의 합 5
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한
www.acmicpc.net
How to Solve ?
1) 타겟만큼의 배열을 만들어 풀기.
function solution(target) { const arr = Array.from({ length: target }, (v, i) => i + 1); let result = 0; let end = 0; let sum = 0; for (let start = 0; start < target; start++) { while (sum < target && end < target) { sum += arr[end]; end += 1; } if (sum === target) { result += 1; } sum -= arr[start]; } console.log(result); } let target = 10; solution(target);
2) 1) 타겟만큼의 배열을 만들지 않고 풀기.
function solution(target) { let end = 1; let sum = 1; let count = 0; for (let start = 1; start <= target; start++) { while (sum < target && end < target) { end += 1; sum += end; } if (sum === target) { count += 1; } sum -= start; } console.log(count); } let target = 10; solution(target);
'PS > 백준' 카테고리의 다른 글
[백준_1911] 흙길 보수하기 ( Greedy - 자바스크립트 ) (0) 2021.06.10 [백준_1182] 부분 수열의 합 ( dfs - 자바스크립트 ) (0) 2021.06.09 [백준_2805] 나무 자르기 ( 이분탐색 - 자바스크립트 ) (0) 2021.06.09 [백준_11659] 구간 합 구하기 4 ( 자바스크립트 ) (0) 2021.06.09 [백준_1018] 체스판 다시 칠하기 (완전탐색 - 자바스크립트) (0) 2021.06.09 댓글