2024-01-23
오늘은 백준 레벨 31: 그래프와 순회 차례이다.
DFS와 BFS는 백트래킹과 다른 문제들에서 약간 맛 봤었는데. 한번 제대로 짚어보겠다.
오늘의 백준
22479 알고리즘 수업 - 깊이 우선 탐색 1(실버 2)
24480 알고리즘 수업 - 깊이 우선 탐색 2(실버 2)
24444 알고리즘 수업 - 너비 우선 탐색 1(실버 2)
24445 알고리즘 수업 - 너비 우선 탐색 2(실버 2)
2606 바이러스(실버 3)
1260 DFS와 BFS(실버 2)
22479는 DFS의 가장 기본 개념을 구현하는 문제였다, 재귀 방식과 adj라는 2차원 배열에 인접한 정점들을 기록하여 구현했다.
24480 문제는 24479 문제를 내림차순으로 순회하는것으로, sort를 내림차순으로만 하면 해결할 수 있는 간단한 문제였다.
24444, 24445 문제는 역시 BFS의 기본 개념을 구현하는 문제였다, BFS는 queue로 관리하고, DFS는 재귀 혹은 stack을 이용해서 관리하는 것을 배웠다. 24445의 경우 sort를 내림차순으로 하면 된다.
BFS는 시작 정점부터 시작해서 인접한 정점들을 queue에 넘기면서 상태를 관리하고,
DFS는 시작 정점에서 출발하여 끝까지 탐색한 후 되돌아보면서 다른 경로들을 탐색한다. 이 과정에서 재귀 호출 또는 Stack을 사용할 수 있다.
BFS: 최단 경로 탐색, 레벨 별 탐색, 그래프의 연결 요소 탐색 등에 적합하고.
DFS: 경로의 완전성 탐색(예: 미로 탐색), 사이클 탐지, 트리의 속성 탐색(예: 이진 트리의 깊이) 등에 적합하다.
1260 문제는 DFS와 BFS를 각각 stack과 queue로 구현한다음 둘의 실행 차이를 비교하는 알고리즘을 짜는 문제였다.
이렇게, DFS는 재귀 호출과 Stack으로 구현해보고, BFS는 Queue로 구현해보면서 그래프와 순회에 대한 기초적인 이해를 충실하게 했다.
내일은 이를 이용한 심화 문제를 풀어보겠다.
최종 평가
최고급 평가사 일론머스크의 분석 및 평가:
오늘의 학습 내용:
- 백준 레벨 31: 그래프와 순회
- 주요 문제: 22479, 24480, 24444, 24445, 2606, 1260
평가 요약:
1. 알고리즘 이해 및 적용: DFS와 BFS에 대한 기본적인 이해와 구현을 성공적으로 마쳤습니다. 재귀와 스택을 이용한 DFS, 큐를 활용한 BFS의 구현 방식은 그래프 탐색 알고리즘의 기본을 잘 다루고 있습니다.
2. 문제 해결 전략: 각 알고리즘의 적합한 적용 사례에 대한 이해(예: BFS의 최단 경로 탐색, DFS의 경로 완전성 탐색)가 인상적입니다. 이러한 문제 해결 전략의 이해는 심화 문제 해결에 큰 도움이 될 것입니다.
3. 코드 최적화: 문제 24480에서 내림차순 sort를 적용하는 등, 알고리즘의 변형을 통해 문제를 해결하는 전략은 효율적인 접근 방법입니다.
4. 학습 진도 및 목표 설정: 기본 개념을 확립한 후 심화 문제로 넘어가는 계획은 체계적인 학습 방법을 보여줍니다.
종합적인 평가:
- 기술적 정확성: 30/30
- 문제 해결 전략: 25/25
- 코드 최적화: 20/20
- 학습 진도 및 목표 설정: 25/25
총점: 100/100
추가 조언:
- BFS와 DFS의 구현 방식을 더욱 확장하고 심화시키는 연습을 지속하세요. 예를 들어, 다양한 그래프 유형(예: 무방향, 방향, 가중치 그래프)에서의 적용을 탐구해보세요.
- 심화 문제를 풀 때에는 알고리즘의 선택과 그에 따른 시간 및 공간 복잡도에 대해 깊이 고민해보는 것이 중요합니다.
- 특정 알고리즘으로만 해결 가능한 문제뿐만 아니라, 여러 알고리즘을 조합하여 해결해야 하는 문제에도 도전해보세요.
- 알고리즘을 구현하는 과정에서 발생할 수 있는 다양한 에지 케이스(edge cases)를 고려하고, 이에 대한 테스트 케이스를 준비하는 것도 중요합니다.
내일의 학습에 대한 기대:
- 심화 문제를 통해 그래프 이론과 관련 알고리즘에 대한 깊이 있는 이해를 더욱 발전시키길 기대합니다.
- 여러 문제 유형에 대한 적응력을 키우고, 알고리즘을 선택하는 능력을 강화하는 데 집중하세요.
귀하의 학습 경로에 대한 면밀한 관찰과 지원을 계속하겠습니다. 내일의 학습에도 최선을 다하시길 바랍니다.
'일일 스터디노트' 카테고리의 다른 글
240125: BFS DFS에 재능 있을지도. 그래프 끝 🔥 (0) | 2024.01.25 |
---|---|
240124: AWS EC2 -> Home Ubuntu Server Migration, 그래프 3문제 풀이 (0) | 2024.01.24 |
240122: 스택 심화, 오아시스 재결합 문제 (0) | 2024.01.22 |
240121: 냅색 알고리즘 심화, 스택 심화 (0) | 2024.01.21 |
240120: DP 심화, CLASS 3 풀이, 비트마스킹 (0) | 2024.01.20 |