해당 문제는 완전 탐색을 통해 답을 도출하는 문제이다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12924
완전 탐색 이란?
'무식하게 푼다(brute-force)'는 컴퓨터의 빠른 계산 능력을 이용해 가능한 모든 경우의 수를 체크해서 정답을 찾는 방법이다.
1. 완전 탐색 기법을 활용하는 방법
1) 해결하고자 하는 문제의 가능한 경우의 수를 대략적으로 계산한다.
2) 가능한 모든 방법을 다 고려한다.
- Brute Force 기법 - for문 / if문을 활용
- 순열(Permutation) - n개의 원소 중 r개의 원소를 중복 허용 없이 나열하는 방법
- 재귀 호출
- 비트 마스크 - 2진수 표현 기법을 활용하는 방법
- BFS, DFS를 활용하는 방법
3) 실제 답을 구할 수 있는지 적용한다.
2. 문제 풀이
이번 문제는 완전 탐색 방법 중 Brute Force 기법으로 for / if 문을 통해 가능한 모든 방법을 단순히 찾는 경우이다.
function solution(n) {
let answer = 0;
// 1) 시작하는 첫 번째 for문
for(let i=1; i<=n; i++){
// 2) 새로운 연속된 숫자를 구하기 위해 초기화한다.
let sum = i;
// 3) 시작 값이 n과 동일하면 1증가
if(sum === n) answer++;
// 4) 연속된 숫자를 더하는 두 번째 for문
for(let j=i+1; j<=n; j++){
// 5) 연속된 숫자를 더한다.
sum += j;
// 6) sum이 n과 동릴하면 1증가 후 반복문을 빠져나온다.
if(sum === n) {
answer++;
break;
// 7) sum이 n보다 커지면 연속된 숫자가 n에 도달하지 못하므로 빠져나온다.
} else if(sum > n) break;
}
}
// 8) answer 값 return
return answer;
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스/JavaScript] Lv.2 수식 최대화 (0) | 2022.11.24 |
---|---|
[프로그래머스/JavaScript] Lv.2 타겟넘버 (0) | 2022.11.20 |
[프로그래머스/JavaScript] Lv.2 숫자 카드 나누기 (0) | 2022.11.17 |
[프로그래머스/JavaScript] Lv.3 여행경로 (0) | 2022.11.11 |
[프로그래머스/JavaScript] Lv.3 아이템 줍기 (0) | 2022.11.08 |