BEYOND SW 캠프 20기 7주차

배창민·2025년 9월 28일
post-thumbnail

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. 다음 주 목표

  1. 알고리즘 실전 감각 올리기

    • 어려워 하는 알고리즘 다시 보기: BFS/DFS, 그리디, 다익스트라, 최소신장트리
    • 최대한 내 힘으로 풀다가 도저히 모르겠으면 풀의 참조하기.
  2. 스프링

    • 다음주까지 김영한 스프링 기본 다 듣기.
  3. 피우다

    • 만약 서류통과를 한다면 바빠질 것 같아서 준비를 잘 해놔야겠다.

profile
개발자 희망자

0개의 댓글