이진 트리 완전 정복: 순회, 판별, 고급 알고리즘
이 문서에서는 이진 트리의 핵심 개념과 다양한 문제 해결 기법을 심층적으로 다룹니다. 노드 구조 정의부터 재귀/비재귀 순회, 그리고 여러 트리 유형 판별 알고리즘과 고급 주제까지 단계별로 살펴봅니다.
1. 이진 트리 노드 구조
이진 트리의 기본 단위는 노드(Node)이며, 각 노드는 데이터와 왼쪽, 오른쪽 자식 노드를 가리키는 포인터로 구성됩니다.
...
7월 7일 02:00에 게시됨
2024년 모바일 개발연구소 2차 면접 문제 풀이
문제 1: P1258 소형차 문제 (Car Problem)
문제 설명
두 사람 A와 B가 동시에 출발지에서 목적지까지 최대한 빨리 도착해야 한다. 출발지에는 운전자 외에 한 명만 태울 수 있는 소형차가 한 대 있다. 두 사람의 도보 속도는 동일하며, 차량 속도보다 느리다. 두 사람이 동시에 도착하기 위해 차량을 어떻게 활용해야 하는지 구하시오.
입력 형식
한 줄에 세 개의 실수: ...
7월 5일 01:51에 게시됨
루고 P2885 유성 폭 shower S 문제 해결
문제
해법
이 문제는 제한 조건이 있는 BFS를 사용해야 합니다. 유성이 실시간으로 발생하기 때문에 이를 고려해야 합니다.
두 가지 접근 방법을 소개합니다:
해법 1
이것은 처음 시도했던 방법입니다.
유성을 실시간으로 처리하며, BFS는 시간 순서대로 탐색하므로 유성을 그때그때 생성할 수 있습니다.
유성이 발생하는 시간을 주의해야 합니다. 만약 t초에 유성이 발생 ...
7월 3일 04:12에 게시됨
2025년 2월 4일~9일 주차 문제 정리
주간 개요
이번 주는 생활 리듬이 불규칙하여 학습 효율이 저하되었고, 이를 개선하기 위해 환경을 변경하였다. 새로운 일정으로 인해 다음 주부터는 더 체계적인 학습과 경기 준비를 할 계획이다.
문제 해결 기록
SMU Winter 2025 Round 6
B. 스트리머의 밤
문제 요약: 여러 프로그램의 시작 및 종료 시간이 주어질 때, 전체 시간 내에 볼 수 있는 최대 프로그램 수를 ...
7월 1일 05:37에 게시됨
2025년 광저우대학교 프로그래밍 경진대회 신입생 대회
A 마법 문 Trial
크기 비교 문제, 난이도 1성
#include <iostream>
using namespace std;
int main()
{
int x, y, z, w;
cin >> x >> y >> z >> w;
if (x < w && y == z)
cout << "YES";
else
cout << "NO";
return 0;
}
B 약초 채집사
약초를 수집 ...
6월 27일 06:21에 게시됨
C++ BFS 알고리즘을 활용한 FloodFill 문제 해결
FloodFill 유형 문제 분석
1. 벽과 문 거리 계산
문제 설명:
2D 그리드에서 방 상태를 나타내는 rooms 배열이 주어집니다. 각 셀은 벽(-1), 문(0), 빈 방(2³¹-1) 중 하나입니다. 모든 빈 방에 대해 가장 가까운 문까지의 거리를 계산하세요.
제약 조건:
m == rooms.length
n == rooms[i].length
1 ≤ m, n ≤ 250
해결 전략:
모든 문의 위치를 큐에 초기 삽입합니다. BFS를 ...
6월 25일 00:44에 게시됨
너비 우선 탐색(BFS)으로 Flood Fill 유형 문제 풀이
너비 우선 탐색(BFS)은 그래프나 그리드에서 최단 경로를 찾거나 연결된 구성 요소를 탐색하는 데 자주 사용되는 강력한 알고리즘입니다. Flood Fill 알고리즘은 특정 시작점에서 인접한 모든 요소들을 탐색하여 변경하는 과정으로, BFS의 대표적인 응용 사례 중 하나입니다. 이 글에서는 BFS를 활용하여 Flood Fill 계열의 문제들을 해결하는 방법을 다룹니다.
1. 이미지 ...
6월 23일 03:44에 게시됨
문자열 변환 문제(무향 그래프 중복 제거)
문자열 변환 문제
문제 설명
이 문제는 문자열 A와 B, 그리고 최대 6개의 문자열 변환 규칙을 주고, A를 B로 변환하는 최소 단계 수를 찾는 문제입니다. 각 변환 규칙은 "A1→B1" 형식으로 주어집니다.
예를 들어, A가 "abcd", B가 "xyz"이고 변환 규칙이 다음과 같다면:
abc→xu
ud→y
y→yz
이 경우, A는 3번의 변환을 통해 B로 변환될 수 ...
6월 21일 20:45에 게시됨
세 컵 콜라 분배 문제의 BFS 해법
문제 개요
세 개의 컵 용량이 각각 S, N, M(S = N + M, 양의 정수)으로 주어집니다. 처음에 S 용량 컵은 가득 차 있고, 나머지는 비어 있습니다. 컵 간 콜라를 서로 붓는 작업을 최소화하여 두 컵에 S/2의 콜라가 담긴 상태를 만드는 것이 목표입니다. 단, S가 홀수이면 해결 불가능합니다.
BFS 접근 방식
각 컵의 현재 상태를 (a, b, c)로 표현하여 BFS를 적용합니다. ...
6월 8일 21:07에 게시됨
그래프 순회 알고리즘: 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)
너비 우선 탐색 (Breadth-First Search, BFS)
너비 우선 탐색은 시작 정점으로부터 가까운 노드를 우선적으로 탐색하는 알고리즘으로, 이진 트리의 레벨 순회(Level-order traversal) 방식과 유사합니다. 탐색 과정에서 큐(Queue)를 사용하여 정점을 관리하고, 방문 여부를 기록하기 위한 불리언 배열을 사용합니다.
시작 정점을 큐에 넣고 방문 처리한 뒤, 큐가 ...
6월 8일 16:40에 게시됨