✅ Keep - 계속 유지하고 싶은 점사고를 구조화하고, 꾸준히 기록하며, 여러 주제로 소통하고 나누기구현 전 설계의 중요성이번 과제에서 가장 크게 배운 점은 '구현보다 설계가 먼저'라는 것이다. 처음엔 단순히 기능을 빠르게 완성하는 데 초점을 맞췄지만, 요구사항을 세분화하고 흐름을 정리하는 과정에서 사고를 구조화하는 힘을 체감했다.기능 단위로 나누고, 입력부터 출력까지의 흐름을 미리 설계해보니 코드를 작성할 때의 혼란이 줄고, 구현 방향이 명확해졌다.이 경험은 앞으로 어떤 프로젝트를 하더라도 '먼저 설계하고, 그다음에 구현한다'는 원칙으로 남을 것 같다.테스트 코드와의 친화력 형성기능을 추가할 때마다 '이전 기능이 혹시 깨지진 않을까?' 하는 불안이 늘 따라붙었다. 테스트가 없을 때는 직접 실행해 확인..
📌 들어가며프리코스 과제에 앞서, README.md에 정의된 기능 단위별로 커밋하고 AngularJS Commit Message Conventions를 참고해 메시지를 작성하라는 요구사항이 있었다.평소에는 단순히 : 형태로 커밋을 작성했지만, 이번 기회를 통해 좀 더 의미 있는 커밋 메시지 구조를 정립하고자 문서를 자세히 살펴보며 정리해보았다.📌 커밋 컨벤션의 목적CHANGELOG.md 자동 생성→ feat, fix, breaking change를 기반으로 자동화 가능불필요한 커밋 구분→ 단순 포매팅이나 주석 수정 등은 style, chore로 분리히스토리 가독성 향상→ 어떤 기능이 어디에서 수정되었는지 명확히 남김📌 커밋 메시지 구조(): → 각 줄은 100자 이내로 유지 1️⃣ 종류f..
📌 들어가며우테코 8기 프리코스를 준비하면서, 이전에 우테코 7기에서 사용했었던 package.json을 그대로 가져와 프로젝트를 세팅했다.1년 넘는 시간이 지나며 내부 패키지들이 여러 번 업데이트되었을 것 같아 npm update 명령어로 최신 버전으로 맞추려 했지만, 의외로 아무것도 바뀌지 않았다.이유를 찾아보니 npm은 단순히 모든 패키지를 최신으로 올려주는 게 아니라, package.json에 지정된 버전 범위(^, ~, 또는 고정 버전) 에 따라 업데이트를 제한적으로 수행한다는 걸 알게 되었다.그래서 오늘은 npm update가 실제로 어떻게 동작하는지, 그리고 그 한계를 넘어 최신 메이저 버전까지 한 번에 업데이트하는 방법을 정리했다.📌 npm update의 동작 원리npm update는 ..
BFS- 모든 노드를 너비를 우선으로 방문하기 위한 알고리즘- 모든 간선의 길이가 동일한 상황에서 두 지점 사이의 거리를 찾는 문제는 BFS로 해결 가능- 인접 리스트, 인접 행렬로 풀이 가능 BFS 연결 그래프 순회 (인접 리스트 방식)const adj = new Array(10).fill(0).map(() => []);const vis = new Array(10).fill(false);function bfs() { const q = []; // 시작 노드를 큐에 넣고 방문 처리 q.push(1); vis[1] = true; // 큐가 비어있지 않은 동안 반복 while (q.length > 0) { // 큐의 맨 앞 노드를 가져오기 const cur = q.shift(); ..
정의- 정점과 간선으로 이루어진 자료구조- 원소사이의 연결관계를 설정해야 하는 상황에서 유용함 종류1. 무방향 그래프 - 간선에 방향성이 없음- 차수(degree)는 이웃한 정점의 개수를 나타냄2. 방향 그래프 - 간선에 방향성이 있음- outdegree: 나가는 간선의 개수- indegree: 들어오는 간선의 개수 3. 순환 그래프 - 간선에의해 사이클이 형성되는 그래프4. 비순환 그래프 - 간선의 방향성에 의해 사이클이 형성되지 않음 5. 완전 그래프 - 모든 두 정점 쌍이 간선으로 연결된 그래프6. 연결 그래프 - 임의의 두 정점 사이의 경로가 항상 존재하는 그래프 표현법1. 인접 행렬- 구현 방법: V x V의 2차원 배열 선언 후 연결된 두 정점에는 1을 연결되지 않은 두 정점에는 0을 할당- ..
소스코드의 평가와 실행- 소스코드 평가 - 실행 컨텍스트 생성 - 변수, 함수 등의 선언문 실행 -> 렉시컬 환경의 환경 레코드에 등록 - 소스코드 실행 (런타임) - 실행에 필요한 정보를 렉시컬 스코프에서 검색 실행 컨텍스트의 역할1. 코드 실행 순서 관리 - 실행 컨텍스트 스택으로 관리 - 현재 실행 중인 코드의 실행 순서를 변경 가능(ex 함수 호출에 의한 실행 순서 변경) 2. 스코프 관리(식별자 관리) - 렉시컬 환경으로 관리 - 선언에 의해 생성된 모든 식별자를 스코프를 구분하여 등록 - 스코프는 중첩 관계에 의해 스코프 체인을 형성 -> 상위 스코프로 이동하며 식별자 검색 가능 실행 컨텍스트 스택> 코드의 실행 순서를 관리> 소스코드 평가 -> 실행 컨텍스트 생성 -> 실행 ..