
알고리즘 주제
3월 7일 토요일
3월 9일 월요일
3월 10일 화요일
3월 11일 수요일
3월 12일 목요일
이번 주에는 알고리즘 학습과 함께 미니 해커톤 프로젝트를 수행.
바이브 코딩에 익숙해지고, 빠르게 서비스를 설계, 구현하는 것을 목표로 했다.
구현 / 문자열 / 재귀 문제 유형 익숙해지기
완전탐색 / 백트래킹 개념 정리
문제 풀이 과정에서 재귀적 사고와 상태 관리, 백트래킹 방식 익히기
GitHub 기반 알고리즘 학습 관리 서비스 설계
백엔드 구조 설계 및 핵심 기능 구현
Codex 기반 Vibe Coding 실험
GitHub OAuth, Repo 분석, Commit 기반 풀이 분석 기능 구현
이번 주에는 두 가지 축으로 학습을 진행했다.
주로 다음 접근 방식으로 문제를 해결했다.
문제를 보고 가능한 알고리즘 유형을 먼저 추정
상태(state)를 정의
탐색 방식 결정
재귀
완전탐색
시간복잡도 검토
Python 코드로 구현 후 테스트
특히 재귀 문제와 백트래킹의 경우 다음 방식으로 접근했다.
종료 조건(base case) 먼저 정의
재귀 호출 구조 설계
상태 복구(backtracking) 여부 확인
프로젝트는 GitHub 기반 알고리즘 학습 대시보드 서비스로 방향을 잡았다.
서비스 핵심 구조는 다음과 같다.
GitHub OAuth 로그인
↓
Repository 선택
↓
Issues / Commits 동기화
↓
Commit 기반 풀이 분석
↓
알고리즘 Skill Map 분석
↓
약점 기반 문제 추천
백엔드는 Flask 기반으로 개발했고
GitHub API를 활용해 다음 데이터를 가져왔다.
repository issues
commits
changed files
DB는 SQLite 기반으로 운영 상태를 저장하도록 설계했다.
초기에는 GitHub 데이터를 매 요청마다 가져오는 구조로 설계했다.
문제점
API 호출이 많아짐
성능 저하
동일 commit을 반복 분석
해결
GitHub를 원본 데이터 소스로 두고
DB를 캐시 + 분석 결과 저장소로 사용하는 구조로 변경했다.
GitHub → 원본 데이터
DB → 서비스 상태 및 분석 결과
단순히 commit만으로 문제를 해결했다고 판단하기 어려웠다.
그래서 다음 기준을 설계했다.
commit에 해당 문제 파일 존재
파일명이 issue 제목 규칙과 매칭
현재 MVP에서는
commit + 파일명 매칭
기준으로 1차 판정 로직을 구현했다.
문제 유형 분석 기준이 필요했다.
그래서 다음 taxonomy를 정의했다.
# 1차 도메인
구현
수학
자료구조
정렬
탐색
# 1차 도메인 + 2번째 카테고리
구현 계열: 구현, 문자열, 사고력, 시뮬레이션, 재귀
자료구조 계열: 그래프, 배열, 스택, 큐, 트리, 해시, 힙
탐색 계열: BFS, DFS, 그리디, DP, 완전탐색, 이분탐색, 최단경로, 탐색
수학, 정렬은 각각 독립 도메인으로 매핑
각 영역 아래 세부 카테고리를 정의하여 Skill Map을 생성하도록 구현했다.
이번 주 가장 크게 느낀 것은 문제 풀이보다 사고 과정이 더 중요하다는 점이다.
특히 재귀, 완전탐색, 백트레킹 문제에서는
상태 정의 → 탐색 구조 → 종료 조건
순서로 접근하는 것이 중요하다는 것을 배웠다.
단순히 기능을 만드는 것과
실제 서비스를 설계하는 것은 완전히 다르다는 것을 느꼈다.
특히 다음 부분이 중요했다.
데이터 흐름 설계
GitHub API 활용
DB 설계
API 구조 설계
이번 프로젝트에서 Codex 기반 개발을 적극적으로 사용했다.
느낀 점
빠른 구조 설계에 매우 유리
반복 코드 작성 속도 증가
하지만 아키텍처 판단은 사람이 해야 한다
다음 주에는 자료구조 문제를 더 집중적으로 학습할 계획이다.
이분 탐색
분할 정복
스택/큐/링크드리스트
해시테이블
미니-레디스(Mini-Redis) 개발 예정.
문제 풀이 속도 개선
시간복잡도 분석 능력 강화