완전 탐색 - 2. 완전 탐색 기본 패턴
2025. 2. 25. 19:00ㆍ소프트웨어/알고리즘
2. 완전 탐색 기본 패턴
완전 탐색은 가능한 모든 경우를 하나씩 조사하여 정답을 찾는 알고리즘입니다.
가장 기본적인 방법은 반복문, 중첩 반복문, 재귀 호출 등을 이용하여 구현할 수 있습니다.
이제 각각의 방법을 살펴보겠습니다.
2.1 반복문을 이용한 완전 탐색
반복문을 사용하여 하나씩 탐색하는 방법입니다.
주어진 범위 내에서 특정 조건을 만족하는 값을 찾는 문제를 해결할 때 유용합니다.
예제 1: 1부터 100까지의 숫자 중에서 3의 배수 찾기
#include <stdio.h>
int main() {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
printf("%d ", i);
}
}
return 0;
}
✅ 설명
- for 반복문을 사용하여 1부터 100까지 모든 숫자를 하나씩 확인합니다.
- if (i % 3 == 0) 조건을 사용하여 3의 배수인지 검사합니다.
- 3의 배수라면 출력합니다.
🔹 실행 결과
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
예제 2: 배열에서 특정 값을 찾기
배열을 탐색하여 특정 값을 포함하는지 찾는 문제입니다.
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50, 60};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 30;
int found = 0;
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
found = 1;
break;
}
}
if (found) {
printf("찾는 숫자 %d가 배열에 존재합니다.\n", target);
} else {
printf("찾는 숫자가 없습니다.\n");
}
return 0;
}
✅ 설명
- 배열의 모든 요소를 하나씩 검사하면서 target 값이 존재하는지 확인합니다.
- found 변수를 이용하여 값을 찾았는지 여부를 저장하고, 찾으면 break 문으로 탐색을 중단합니다.
🔹 실행 결과
찾는 숫자 30가 배열에 존재합니다.
예제 3: 1부터 N까지의 합 계산하기
반복문을 이용하여 1부터 N까지의 합을 계산하는 문제입니다.
#include <stdio.h>
int main() {
int n, sum = 0;
printf("N 값을 입력하세요: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("1부터 %d까지의 합: %d\n", n, sum);
return 0;
}
✅ 설명
- for 반복문을 사용하여 1부터 n까지의 모든 숫자를 더합니다.
- sum += i 문장을 통해 누적 합을 계산합니다.
🔹 실행 결과 (N=10 입력 시)
1부터 10까지의 합: 55
정리
✅ 반복문을 이용한 완전 탐색은 가장 기본적인 탐색 방법으로, 특정 범위 내에서 조건을 만족하는 값을 찾는 데 유용합니다.
✅ 모든 경우를 하나씩 확인하기 때문에 반드시 정답을 찾을 수 있지만, 경우의 수가 많아지면 성능이 떨어질 수 있습니다.
✅ 시간 복잡도는 일반적으로 O(N)이며, 경우에 따라 중첩 반복문을 사용하면 O(N²)까지 증가할 수 있습니다.
'소프트웨어 > 알고리즘' 카테고리의 다른 글
완전 탐색 - 4. 시간 복잡도와 최적화 (0) | 2025.02.25 |
---|---|
완전 탐색 - 3. 완전 탐색을 이용한 대표적인 문제 (0) | 2025.02.25 |
완전 탐색 - 1. 완전 탐색(Brute Force)란? (0) | 2025.02.25 |
그리디 알고리즘 (Greedy Algorithm) 요약 (0) | 2025.02.25 |
그리디 - 6. 실전 문제 풀이 및 최종 프로젝트 (0) | 2025.02.25 |