알고리즘(23)
-
완전 탐색 - 2. 완전 탐색 기본 패턴
2. 완전 탐색 기본 패턴완전 탐색은 가능한 모든 경우를 하나씩 조사하여 정답을 찾는 알고리즘입니다.가장 기본적인 방법은 반복문, 중첩 반복문, 재귀 호출 등을 이용하여 구현할 수 있습니다.이제 각각의 방법을 살펴보겠습니다.2.1 반복문을 이용한 완전 탐색반복문을 사용하여 하나씩 탐색하는 방법입니다.주어진 범위 내에서 특정 조건을 만족하는 값을 찾는 문제를 해결할 때 유용합니다.예제 1: 1부터 100까지의 숫자 중에서 3의 배수 찾기#include int main() { for (int i = 1; i ✅ 설명for 반복문을 사용하여 1부터 100까지 모든 숫자를 하나씩 확인합니다.if (i % 3 == 0) 조건을 사용하여 3의 배수인지 검사합니다.3의 배수라면 출력합니다.🔹 실행 결과3 6 ..
2025.02.25 -
완전 탐색 - 1. 완전 탐색(Brute Force)란?
1. 완전 탐색(Brute Force)란?완전 탐색(Brute Force)은 가능한 모든 경우의 수를 하나하나 확인하여 정답을 찾는 알고리즘 기법입니다.어떤 문제가 주어졌을 때, 특정한 규칙을 활용하여 문제를 최적화하는 것이 아니라, 단순히 모든 경우를 다 시도해보고 최적의 해를 찾는 방식입니다.예를 들어, 비밀번호를 분실했을 때 "0000"부터 "9999"까지 모든 조합을 하나씩 입력해보는 방식이 바로 완전 탐색입니다.이 방법은 매우 직관적이고 구현하기도 쉬우며, 반드시 정답을 찾을 수 있다는 장점이 있지만, 경우의 수가 많아지면 연산량이 급격히 증가하여 비효율적일 수 있습니다.1.1 개념 이해완전 탐색은 다음과 같은 특징을 가집니다.✅ 장점직관적이고 이해하기 쉬움특별한 알고리즘적 사고 없이도 쉽게 구..
2025.02.25 -
그리디 알고리즘 (Greedy Algorithm) 요약
그리디 알고리즘 (Greedy Algorithm)📌 1. 그리디 알고리즘 개요✅ 학습 목표알고리즘이란 무엇인가?그리디 알고리즘의 개념과 특징 이해그리디 알고리즘이 사용될 수 있는 조건 이해✅ 학습 내용알고리즘이란? (컴퓨터가 문제를 해결하는 절차)그리디 알고리즘이란?매 단계에서 가장 최적(최선)의 선택을 하는 알고리즘전체적으로도 최적의 해를 찾을 수 있는 경우 사용그리디 알고리즘이 적용 가능한 경우탐욕적 선택 속성 (Greedy Choice Property): 부분 최적해가 전체 최적해를 보장할 때최적 부분 구조 (Optimal Substructure): 부분 문제의 최적해를 조합하여 전체 문제의 최적해를 만들 수 있을 때📌 2. 기본적인 그리디 알고리즘 구현✅ 학습 목표그리디 알고리즘을 C언어로 구..
2025.02.25 -
동적 계획법 - 5. DP 마스터하기
5. DP 마스터하기동적 계획법(DP)을 충분히 연습했다면, 이제 고급 문제를 해결하는 전략과 코딩 테스트에서 효율적으로 활용하는 방법을 익혀야 합니다.이번 장에서는 DP 문제의 고급 접근법, 최적화 기법, 면접 및 코딩 테스트 대비 전략을 다룹니다.5-1. DP를 활용한 고급 문제 접근법📌 1️⃣ 상태(State) 정의 방법 학습DP 문제를 풀기 위해서는 문제에서 변하는 값(상태)을 정의하는 것이 가장 중요합니다.💡 예제 1: 계단 오르기 (Climbing Stairs)상태 정의:dp[i]: i번째 계단까지 오르는 방법의 수점화식: dp[i]=dp[i−1]+dp[i−2]💡 예제 2: 최장 증가 부분 수열 (LIS, Longest Increasing Subsequence)상태 정의:dp[i]: nu..
2025.02.24 -
동적 계획법 - 4. DP 실전 연습 (문제 풀이)
4. DP 실전 연습 (문제 풀이)동적 계획법(DP)의 개념을 이해했다면, 직접 문제를 풀어보는 것이 중요합니다.이번 장에서는 단계별 난이도의 문제를 통해 DP를 연습하고, 알고리즘 문제 풀이 사이트에서 추천 문제를 선정하여 실력을 향상시키는 방법을 소개합니다.4-1. 단계별 난이도 문제 풀이📌 기초 문제 (Basic)1️⃣ 피보나치 수열 (Fibonacci Numbers)시간 제한: 1초메모리 제한: 128MB공간 복잡도: O(1)문제: n번째 피보나치 수를 구하는 문제접근 방법:재귀 (O(2^n)) → 비효율적메모이제이션 (O(n)) → 최적화바텀업 (O(n), O(1) 메모리) → 최적화def fib(n): if not isinstance(n, int) or n 2️⃣ 계단 오르기 (Clim..
2025.02.24 -
동적 계획법 - 3. 실전 문제 응용
3. 실전 문제 응용동적 계획법(DP)을 실전 문제에 적용하면 최적의 해를 빠르게 구할 수 있습니다.이번 장에서는 경로 찾기, 문자열 및 수열 문제, 최적화 문제에서 DP를 활용하는 방법을 배웁니다.3-1. 경로 찾기 관련 문제📌 최단 경로 문제 (Minimum Path Sum) - 입력 검증 추가문제 설명m×n 크기의 2D 격자(grid)가 주어졌을 때,왼쪽 위에서 오른쪽 아래로 이동하는 최소 비용 경로를 찾는 문제입니다.이동 가능 방향: 오른쪽(→), 아래(↓)각 칸에는 이동 비용(양의 정수)이 주어짐.점화식dp[i][j]=min(dp[i−1][j],dp[i][j−1])+grid[i][j]초기 조건:첫 번째 행과 첫 번째 열은 이동 경로가 1가지뿐이므로 누적합을 계산.시간 복잡도:O(m×n) (2..
2025.02.24