7주차 회고록
1. 7주차를 시작하며
수업이 본격적으로 알고리즘 파트에 들어왔다. 초반엔 익숙한 개념도 있었지만, 뒤로 갈수록 난이도가 확 올라간다. 한 주 동안 자료구조(복잡도/리스트/스택/큐/덱 → 트리/힙/그래프)와 알고리즘(정렬 → DFS/BFS → 그리디)를 쭉 훑었고, 팀에서는 피우다 프로젝트 신청서를 마무리했다. 스터디는 스프링 컨테이너/싱글톤부터 예습 시작했다.
2. 학습 내용
2-1. [자료구조] 복잡도 & List / Stack / Queue / Deque
-
복잡도: 빅오로 상한선 사고하기. 정렬 O(n log n), 선형 탐색 O(n), 해시 평균 O(1).
-
List
- 배열: 접근
O(1), 중간 삽입/삭제 O(n).
- 연결리스트: 접근
O(n), 노드만 알면 삽입/삭제 O(1).
-
Stack(LIFO): push/pop/peek O(1) — 호출 스택, 괄호검사, DFS 보조.
-
Queue(FIFO): offer/poll/peek O(1) — BFS, 작업 스케줄링.
-
Deque: 양끝 삽입/삭제 O(1) — 슬라이딩 윈도우, undo/redo.
2-2. [자료구조] 트리 · 힙 · 그래프
-
트리: 계층 구조, 순회 pre/in/post, BST 평균 O(log n)(편향 시 O(n)).
-
균형 트리(AVL/레드블랙): 탐색/삽입/삭제 O(log n) 보장.
-
힙: 완전이진트리 기반 우선순위 큐, 삽입/삭제 O(log n), 최솟값/최댓값 O(1).
-
그래프
- 표현: 인접리스트
O(V+E) 메모리(희소 그래프에 유리), 인접행렬 O(V²)(밀집 그래프/즉시접근).
- 탐색: DFS/BFS, 최단경로·최소신장트리 등 기반.
2-3. [알고리즘] Sort
-
비교 기반 요약
- 삽입/버블/선택: 평균
O(n²) — 거의 정렬된 배열엔 삽입 정렬 유리.
- 병합/힙/퀵: 평균
O(n log n) (퀵 최악 O(n²)).
-
Java Arrays.sort()
- 기본형: Dual-Pivot QuickSort(불안정, 빠름, 제자리).
- 객체형: TimSort(안정, 최악
O(n log n), 부분정렬 최적화).
2-4. [알고리즘] DFS / BFS
- DFS: 스택/재귀. 모든 경로 탐색, 백트래킹, 사이클 탐지.
- BFS: 큐. 가중치 동일 그래프 최단거리 보장, 레벨 탐색에 유리.
- 선택 가이드: 최단거리 → BFS, 조합/경로열거/백트래킹 → DFS.
2-5. [알고리즘] Greedy
- 매 순간 국소 최적 선택으로 전역 최적 추정.
- 조건: 탐욕 선택 속성 + 최적 부분 구조가 성립해야 함.
- 예: 회의실 배정(끝시간 오름차순), 동전 거스름(체계가 맞을 때만), 분할 가능 배낭(가치/무게 비율).
3. 진행 상황
3-1. 스프링 스터디(예습 시작)
- 스프링 컨테이너 & 빈 등록:
ApplicationContext, @Component 스캔, @Bean 팩토리 메서드.
- 싱글톤 컨테이너: 빈은 기본 싱글톤 스코프, 상태 공유 주의(무상태 설계 원칙 복습).
3-2. 피우다 프로젝트
- 신청서 작성 완료.
- 다음 단계: 기본 DB 설계 및 ERD 작성.
4. 7주차를 되돌아보며
- 자료구조/알고리즘을 넓게 연결해서 이해하려고 노력했다. (예: BFS 큐 ↔ 그래프 인접리스트 ↔ 최단거리).
- 후반으로 갈수록 난이도가 높아지는 것을 체감했다. (특히 그래프 + 탐색 응용). 직접 해당 예제들을 풀어보며 이해도를 높혔다.
- 점점 피우다 프로젝트 신청 마감이 다가옴에 따라 신청서를 마무리하기 위해 바쁜 한 주 였던 것 같다.
- 스프링 스터디 또한, 추석 전 강의를 전부 듣기 위해 열심히 나아가고 있다.
5. 아쉬웠던 점
- BFS/DFS, 그리디, 다익스트라, 최소신장트리 관련 알고리즘은 아직 부족한 것 같아서 복습이 필요해 보인다.
- 코딩 테스트 대비 문제량이 아직 부족한 것 같다. 손이 안 익은 패턴은 특히 약하다.
- 피우다 프로젝트, 스프링 스터디를 한다고 시간이 부족하여 복습을 철저히 못 했다.
6. 다음 주 목표
-
알고리즘 실전 감각 올리기
- 어려워 하는 알고리즘 다시 보기:
BFS/DFS, 그리디, 다익스트라, 최소신장트리
- 최대한 내 힘으로 풀다가 도저히 모르겠으면 풀의 참조하기.
-
스프링
-
피우다
- 만약 서류통과를 한다면 바빠질 것 같아서 준비를 잘 해놔야겠다.