[크래프톤정글/WIL] 3주차 회고: 동적 계획법과 시스템 버스, 건강 악화와 장비 고장 속에서 지켜낸 학습의 끈

코딩이 어려운 사람·2026년 10월 22일

WIL

목록 보기
3/8

소주제

  1. 3주차 학습 개요와 기술 스택: 동적 계획법(DP)과 컴퓨터 시스템 버스 아키텍처
  2. 내가 직면했던 현실과 한계: 신체적 한계와 장비 고장이라는 이중 악재
  3. 핵심 기술 개념과 코드 분석: 최적 부분 구조(Optimal Substructure)와 DP 메모이제이션
  4. 컴퓨터 하드웨어 시스템 버스 3요소(데이터, 주소, 제어)와 CPU 인출-실행 사이클
  5. 협업과 소통의 성찰: 악조건 속에서도 포기하지 않는 회복 탄력성(Resilience)
  6. 실행 가능한 액션 플랜: 건강 루틴 관리와 클라우드 백업 개발 환경 구축
  7. 3주차 핵심 엔지니어링 Q&A 3선

1. 3주차 학습 개요와 기술 스택: 동적 계획법(DP)과 컴퓨터 시스템 버스 아키텍처

3주차는 알고리즘 영역에서 가장 악명 높은 동적 계획법(Dynamic Programming)과 그리디(Greedy), 그래프 최단 경로(다익스트라 알고리즘)를 학습함과 동시에, 하드웨어 레벨에서 CPU와 메모리가 어떻게 전기적 신호로 소통하는지 컴퓨터 구조의 시스템 버스(System Bus) 원리를 탐구하는 주차였습니다.

[동적 계획법의 하위 문제 캐싱 메커니즘]

복잡한 문제 (Size N)
        │
        ├─ 하위 문제 1 (Size N-1) ──► 계산 완료 후 메모이제이션 테이블에 캐싱
        │
        ├─ 하위 문제 2 (Size N-2) ──► 캐시 테이블에서 O(1) 즉시 인출! (중복 연산 방지)
        │
        └─ 점화식 기반 최적해 합성 (상향식 Tabulation 또는 하향식 Memoization)

2. 내가 직면했던 현실과 한계: 신체적 한계와 장비 고장이라는 이중 악재

"몸이 너무 아팠고, 노트북이 수리중이어서, 코드,CS둘다 하긴 했지만 별로 였던 한주"

3주차는 정글 입소 이래 가장 가혹한 외부적 시련이 닥친 한 주였습니다. 환절기 면역력 저하와 누적된 피로로 인해 몸이 심하게 아파 정상적인 컨디션을 유지하기 힘들었습니다. 설상가상으로 코딩을 해야 할 주력 노트북마저 전원 및 하드웨어 결함으로 서비스 센터에 수리를 맡겨야 했습니다.

온전치 않은 몸을 이끌고 도서관의 임시 PC나 스마트폰으로 알고리즘과 CS 강의를 들으며 버텼지만, 개발 환경이 깨져 버리자 코드 작성의 몰입도가 현저히 떨어졌습니다. 코드도 치고 CS 공부도 하긴 했으나, 내가 원하는 만큼의 학습량을 달성하지 못했다는 자책감과 동료들보다 뒤처지고 있다는 극심한 불안감에 시달렸습니다.


3. 핵심 기술 개념과 코드 분석: 최적 부분 구조(Optimal Substructure)와 DP 메모이제이션

3.1 단순 재귀의 지수적 폭발과 메모이제이션의 O(N)O(N) 최적화

피보나치 수열과 같은 분할 정복 문제에서 단순 재귀를 사용하면 동일한 하위 문제들이 트리 형태로 중복 계산되어 시간복잡도가 O(2N)O(2^N)으로 폭증합니다. 이미 계산된 결과를 배열이나 딕셔너리에 저장하는 메모이제이션(Memoization)을 적용하면 모든 하위 문제를 단 한 번만 계산하여 O(N)O(N)으로 최적화됩니다.

# [상향식 타뷸레이션(Tabulation)을 적용한 피보나치 DP]
def fibonacci_dp(n):
    if n <= 1:
        return n
    
    dp = [0] * (n + 1)
    dp[1] = 1
    
    for i in range(2, n + 1):
        dp[i] = dp[i - 1] + dp[i - 2]
        
    return dp[n]
  • 상향식(Bottom-up) vs 하향식(Top-down): 상향식 방식은 재귀 함수 호출에 따른 스택 프레임 생성/해제 오버헤드가 없으므로, 스택 오버플로우 위험을 원천 차단하고 메모리 공간을 극도로 효율화합니다.

4. 컴퓨터 하드웨어 시스템 버스 3요소(데이터, 주소, 제어)와 CPU 인출-실행 사이클

컴퓨터의 3대 물리 구성 요소인 CPU, RAM, 입출력 장치는 메인보드 상의 공통 전송로인 시스템 버스(System Bus)로 연결되어 있습니다.

[CPU와 메인 메모리 간 3대 시스템 버스 연결 구조]

+-------------------+                 +-------------------+
|                   | ──(주소 버스: 단방향, Address Bus)──► |                   |
|     중앙처리장치    | ◄──(데이터 버스: 양방향, Data Bus)──► |     주기억장치     |
|       (CPU)       | ──(제어 버스: 제어 신호, Control Bus)─► |       (RAM)       |
+-------------------+                 +-------------------+
  1. 주소 버스(Address Bus, 단방향): CPU가 읽거나 쓰고자 하는 메모리 셀의 물리 주소를 메모리 컨트롤러로 전송합니다. 주소 버스의 폭(비트 수)이 CPU가 직접 접근할 수 있는 물리 메모리의 최대 용량(2N2^N 바이트)을 결정합니다.
  2. 데이터 버스(Data Bus, 양방향): CPU와 메모리, 입출력 장치 간에 실제 기계어 명령어와 데이터 피연산자 바이트가 오고 가는 고속도로입니다.
  3. 제어 버스(Control Bus): 현재 주소 버스에 실린 메모리 위치에 대해 '읽기(Memory Read)'를 수행할 것인지, '쓰기(Memory Write)'를 수행할 것인지 전기적 제어 신호를 전달합니다.

5. 협업과 소통의 성찰: 악조건 속에서도 포기하지 않는 회복 탄력성(Resilience)

이 주차를 지나며 배운 인생의 커다란 깨달음은 "최상의 컨디션에서 잘 달리는 것은 누구나 할 수 있지만, 최악의 조건 속에서도 완전히 손을 놓지 않고 끈을 유지하는 것이 진짜 실력"이라는 점이었습니다.

몸이 아프고 장비가 고장 났다고 해서 그대로 자리에 누워버렸다면 3주차의 모든 지식을 놓쳤을 것입니다. 비록 최고의 몰입도를 내지는 못했더라도, 서툰 임시 환경에서 개념 정리를 하고 팀원들에게 내 상황을 투명하게 공유하며 최소한의 학습 보폭을 유지했던 경험은, 향후 어떤 예측 불가능한 프로젝트 위기가 닥쳐도 버텨낼 수 있는 든든한 내면의 맷집이 되었습니다.


6. 실행 가능한 액션 플랜: 건강 루틴 관리와 클라우드 백업 개발 환경 구축

  1. 건강 루틴 고정: 수면 시간을 최소 6시간 확보하고, 주 3회 가벼운 스트레칭과 비타민 섭취를 통해 면역력 붕괴를 예방하기.
  2. 장비 독립적 개발 환경(Cloud Dev Environment): 로컬 PC 고장에 대비하여 GitHub Codespaces 및 웹 기반 클라우드 에디터 설정을 사전에 완료하여 장비 교체 시 5분 내 코딩 복귀 환경 구축하기.
  3. 팀 투명성 유지: 컨디션 난조가 발생했을 때 혼자 끙끙 앓지 않고 팀 스크럼에서 솔직하게 공유하여 팀의 전체 작업 일정이 왜곡되지 않도록 소통하기.

7. 3주차 핵심 엔지니어링 Q&A 3선

Q1. 동적 계획법(DP)을 적용하기 위한 2대 선행 수학적 조건은 무엇인가?

답변: 첫째는 최적 부분 구조(Optimal Substructure)로, 전체 문제의 최적해가 하위 문제들의 최적해로부터 구성될 수 있어야 합니다. 둘째는 중복 부분 문제(Overlapping Subproblems)로, 동일한 하위 문제가 재귀 탐색 과정에서 여러 번 반복하여 호출되어야 합니다. 중복 호출이 없는 문제(예: 병합 정렬)는 분할 정복으로 해결하며, 중복이 존재할 때만 메모이제이션을 통한 DP 캐싱이 유효합니다.

Q2. 32비트 CPU 아키텍처가 물리 메모리를 최대 4GB까지만 인식할 수 있는 컴퓨터 공학적 이유는?

답변: 주소 버스(Address Bus)의 폭이 32비트라는 것은 CPU가 보낼 수 있는 고유한 메모리 주소의 가짓수가 2322^{32}개임을 의미합니다. 컴퓨터 메모리는 바이트(Byte, 8비트) 단위로 주소가 부여되므로, 232 바이트=4,294,967,296 바이트=4 GiB2^{32} \text{ 바이트} = 4,294,967,296 \text{ 바이트} = 4 \text{ GiB}가 하드웨어적으로 접근 가능한 절대적 한계선이 됩니다. 4GB를 초과하는 메모리를 물리적으로 직접 다루기 위해서는 주소 버스가 64비트로 확장되어야 합니다.

Q3. 다익스트라 최단 경로 알고리즘에서 우선순위 큐(최소 힙)를 적용할 때의 시간복잡도 개선 원리는?

답변: 단순 배열을 사용하여 매번 최단 거리 정점을 선형 탐색(O(V)O(V))하면 전체 시간복잡도는 O(V2)O(V^2)가 됩니다. 반면 최소 힙(Min-heap) 기반 우선순위 큐를 적용하면 거리가 가장 짧은 정점을 인출하는 비용이 O(log⁡V)O(\log V)로 단축되며, 모든 간선에 대한 거리 갱신 연산(O(Elog⁡V)O(E \log V))을 포함하여 전체 시간복잡도를 O((V+E)log⁡V)O((V + E) \log V)로 획기적으로 개선할 수 있습니다.


크래프톤 정글 3주차 DP 메모이제이션과 하드웨어 시스템 버스 아키텍처 다이어그램

profile
그사세가 아닌 내세상으로 만들기

0개의 댓글