| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 크래프톤 정글
- js
- 그래프
- Git
- react
- 정글
- DFS
- 코딩
- BFS
- Python
- 그리디
- HTML기초
- 해시
- Mini-React
- 백준
- 알고리즘 기초
- 팀프로젝트
- 프론트엔드
- javascript
- 정렬
- 코딩테스트
- 개발자
- c언어
- CSS
- 알고리즘
- 프로그래머스
- html
- 혼자 공부해서 개발까지
- 프론트앤드
- frontend
- Today
- Total
목록2025/09 (16)
민혁이의 IT스토리
그리디 알고리즘이란?그리디 알고리즘은 매 순간 가장 최선이라고 생각되는 선택을 해 나가며 최종 해답을 구하는 알고리즘이다개념 정의문제를 풀 때 전체적인 최적해를 한 번에 고려하지 않고, 지금 당장 가장 좋아 보이는 선택(국소적 최적해)을 반복해서 최종 해답을 만드는 방식이죠.특징 직관적: 구현하기 쉽고, 아이디어만 떠올리면 코드로 옮기기가 간단해요.빠름: 매 순간 최적 선택만 하기 때문에 복잡한 탐색이 필요 없어요.정답 보장 안됨 : 모든 문제에서 항상 정답을 주지는 않아요. 특정 조건이 만족될 때만 정답이 됩니다.즉, "빠르고 간단하지만, 믿음직하지 않을 수 있다"는 게 핵심 특징이에요. 그리디 알고리즘의 조건그리디 알고리즘이 문제를 정확히 풀 수 있으려면 두 가지 조건이 충족되어야 합니다.탐욕적 선택..
DP란? DP(Dynamic Programming)는 복잡한 문제를 작은 부분 문제로 나누어 풀고, 그 결과를 저장해 두었다가 재사용하는 알고리즘 기법이다. 핵심 아이디어는 "중복되는 부분 문제를 저장해서 다시 계산하지 않는다" 입니다.DP의 조건DP를 적용하려면 두 가지 조건이 성립해야 합니다 최적 부분 구조 (Optimal Substructure)큰 문제의 정답을 작은 문제의 정답으로부터 구할 수 있어야 함즉, 부분 문제들을 조합하면 전체 문제의 답이 됨중복되는 부분 문제 (Overlapping Subproblems)같은 부분 문제가 여러 번 반복해서 나타나야 함한 번 계산한 값을 저장해 두고 다시 쓸 수 있어야 효율적 접근 & 구현 방식 (1) Top-Down (메모이제이션, 재귀 기반) 큰 문제를..
위상정렬이란?방향 그래프(Directed Graph)에서 각 노드의 선행 조건을 고려하여 순서를 나열하는 것입니다.즉, A가 B보다 먼저 수행되어야 한다면, A는 B보다 먼저 나온다 라는 규칙을 만족하는 순서를 찾는 거예요.주로 작업 스케줄링, 과목 이수 순서, 프로젝트 작업 순서 등에 사용됩니다.전제 조건: 그래프가 DAG(Directed Acyclic Graph, 사이클 없는 방향 그래프)**여야 합니다.사이클이 있으면 위상정렬이 불가능합니다. 위상정렬이 필요한 이유예시 1: 과목 수강 순서“자료구조 → 알고리즘 → 프로젝트”알고리즘을 듣기 전에 자료구조를 먼저 들어야 한다면, 위상정렬로 가능한 수강 순서를 결정할 수 있습니다.예시 2: 프로젝트 작업 관리프로젝트의 여러 작업 중 어떤 작업은 다른 작..
BFS란?그래프 탐색 알고리즘 중 하나로, 시작 정점에서 가까운 노드부터 차례대로 탐색해 나가는 방식입니다.즉, "넓게 퍼져나가듯" 탐색한다고 해서 너비 우선 탐색이라고 부릅니다. 동작 원리시작 노드를 큐(Queue)에 넣는다.큐에서 노드를 꺼내서 방문한다.방문한 노드의 인접한 노드들을 모두 큐에 넣는다.큐가 빌 때까지 2~3 과정을 반복한다. BFS의 특징 큐(Queue) 사용: FIFO 구조로 탐색 순서를 보장가까운 노드부터 탐색: 레벨별 탐색이 가능최단 경로 탐색에 유리: 가중치가 없는 그래프에서 최단 거리를 찾을 때 많이 사용 마무리BFS는 그래프나 트리에서 가장 기본적인 탐색 알고리즘으로,큐를 활용해 가까운 노드부터 차례대로 탐색하는 방식입니다.특히 최단 거리 문제에서 매우 유용하게 사용되므로 ..
DFS란 무엇일까?DFS는 그래프 탐색 알고리즘 중 하나로, 한 방향으로 끝까지 파고 들어간 뒤 더 이상 진행할 수 없을 때 다시 돌아와 다른 경로를 탐색하는 방식이에요. 트리 탐색이나 미로 문제 같은 곳에서 자주 등장합니다. 👉 쉽게 말하면, "갈 수 있는 길이 있으면 계속 들어가고, 막히면 돌아와서 다른 길을 찾는 방법"이에요. 동작 방식DFS의 핵심 아이디어는 스택(Stack) 구조입니다.재귀 함수를 사용하면 내부적으로 스택이 사용되기 때문에 구현이 간단해집니다.동작 순서를 정리하면:시작 노드에서 출발아직 방문하지 않은 인접 노드를 하나 골라 방문더 이상 방문할 노드가 없으면 이전 노드로 돌아감 (백트래킹)모든 노드를 방문할 때까지 반복 DFS의 특징 장점구현이 간단하다 (특히 재귀 활용 시)그..
정글 생활을 시작한 지 벌써 한 달이 다 되어간다. 개인적으로는 이 한 달이 꽤 길게 느껴졌다. 예상은 했지만, 낯선 환경에서 처음 만난 사람들과 함께 지내며 동료 학습을 이어가는 일은 결코 쉽지 않았다.그런 가운데 오늘은 처음으로 코치님과 대화를 나눌 수 있는 '커피챗'을 신청했다. 신청한 이유는 크게 두 가지였다. 지금 내가 잘하고 있는지 확인을 받고 싶었다.진로와 방향성에 대해 코치님의 조언을 듣고 싶었다 그래서 이런 고민들을 해결하고자 코치님께 커피챗을 신청했다. 대화를 통해 원하던 답변을 어느 정도 얻은 것 같았지만, 사실 고민이 완전히 사라지지는 않았다.내가 첫 번째로 드린 질문은 다음과 같았다.“프론트엔드 개발자가 되고 싶어서 정글에 들어왔습니다. 하지만 공부를 하다 보니 내가 선택한 길이 ..
그래프란? 그래프(Graph)는 점과 선으로 이루어진 그림 같은 구조예요.정점(Vertex, Node): 점에 해당 (사람, 도시, 컴퓨터 같은 대상).간선(Edge): 점과 점을 연결하는 선 (친구 관계, 도로, 네트워크 연결).즉, 그래프는 “무엇과 무엇이 연결되어 있는지”를 표현하는 도구예요. 기본 구성 요소(용어)인접하다 (Adjacent): 두 점이 간선으로 직접 연결되어 있으면 인접.차수(Degree): 한 점에 연결된 선의 개수. (예: 친구가 3명이면 차수=3)경로(Path): 한 점에서 다른 점으로 이동할 수 있는 길. 그래프의 종류 - 무방향 그래프: 선에 방향이 없음 (A와 B가 친구라면 A↔B 똑같음). - 방향 그래프: 선에 방향이 있음 (예: A가 B를 팔로우해도, B가 A를 ..
헤시테이블이란? 키(key)와 값(value)을 짝지어 저장하는 자료구조해시 함수(Hash Function)를 사용해 키를 특정 인덱스로 변환하여 값을 저장하고 검색대표적으로 딕셔너리(Dictionary, Python), 맵(Map, Java), 객체(Object, JavaScript) 같은 자료형이 해시테이블 기반으로 동작동작 원리 해시 함수(Hash Function) 적용키 → 해시 함수 → 해시값(배열 인덱스)저장배열의 해당 인덱스 위치에 값 저장검색동일한 키로 해시 함수 → 같은 인덱스 → 값 꺼냄 예시# 파이썬 딕셔너리 = 해시테이블hash_table = {}hash_table["apple"] = 100hash_table["banana"] = 200print(hash_table["apple"])..