Git&Github 실무 활용 완벽 가이드프로젝트를 다른 사람들과 함께 진행할 때는 Git과 GitHub가 필수적입니다. 이 도구들은 여러 기능을 동시에 추가하거나, 다양한 버전의 파일을 관리할 필요가 있을 때 특히 유용합니다. 개발을 처음 시작할 때는 당장 눈앞에 있는 언어나 프레임워크를 익히는 것만으로도 벅찬 경우가 많습니다. 그래서 Git에 관한 강의를 들어도 처음에는 필요성이 와닿지 않을 수 있습니다. 그러다 시간이 지나 막상 프로젝트를 시작하고 나면 GitHub를 사용하면서 발생하는 충돌로 당황스러울 때가 있습니다. 필요할 때마다 자주 쓰이는 명령어들을 검색하여 사용하는 것도 유효한 방법이지만, 이 강의를 수강한 후에는 단순히 명령어를 사용하는 것을 넘어 전체적인 흐름이 이해할 수 있을 것입니다..
문제https://www.acmicpc.net/problem/9205 풀이최대 20병이 들어가는 맥주 한 박스를 들고 출발하여 50m마다 맥주를 한 병씩 마시면서 가야 할 때, 상근이네 집에서 페스티벌에 갈 수 있으면 "happy"를, 그렇지 않으면 "sad"를 출력한다.편의점 개수 + 3(편의점 개수, 상근이 집 좌표, 페스티벌 좌표 입력) 씩 인덱스를 증가시키면서 테스트 케이스를 입력받는다.한 박스에 20병을 넣을 수 있고, 50m마다 맥주 한 병을 마셔야 하기 때문에 최대 이동할 수 있는 거리는 20x50=1000m이다. 따라서 서 맥주를 채울 수 있는 편의점까지 이동할 때, 또는 도착지인 페스티벌 좌표까지 이동할 때 거리가 1000m가 넘어가면 갈 수 없다.편의점을 무조건 순서대로 방문하는 것이 ..
문제https://www.acmicpc.net/problem/16946 풀이모든 1에서 BFS를 돌면 (NM)^2으로 시간초과벽 주변의 0 묶음의 개수를 더하면 이동할 수 있는 영역이다.따라서 이동 가능한 영역인 0 묶음의 개수를 세어 주변 벽인 1에 더해준다.모듈러 연산의 분배법칙을 생각하고 매번 나눠주는 경우, board 원본 배열의 벽을 증가시키다 10의 배수가 되는 경우 0이 되어 벽으로 인식하지 못하는 문제가 생기므로 유의해야 한다. 시간복잡도: O(NM)class Queue { constructor() { this.data = []; this.head = 0; this.tail = 0; } push(item) { this.data[this.tail++] = item;..
지난주 모던 리액트 딥다이브 스터디에서 Next.13에서 도입된 서버 컴포넌트를 소개하였는데, 서버의 부담을 줄여줄 수 있지만 비용이 늘어날 수 있어 서버와 클라이언트 간 작업을 균형 있게 분배 해야 한다는 결론이 나왔습니다. 이에 SSR과 서버 컴포넌트를 효율적으로 도입할 수 있는 방안으로 중간 서버인 CDN의 캐싱을 적절히 활용해 볼 수 있겠다고 생각하였고, 캐시에 대한 전반적인 내용과 CDN에 대해 정리해 보았습니다. 캐시캐시란 데이터나 값을 미리 복사해 놓은 임시 저장소를 뜻합니다. 캐시는 원본 데이터에 접근하는 시간이 오래 걸리거나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용할 수 있습니다. 이렇게 캐시에 데이터를 미리 복사해두면 계산이나 접근 시간 없이 빠른 속도로 필요한 데이터에..
최근 Context API와 Recoil을 비교하면서 위 주제에 대해 이야기하게 되었다. 이에 대한 의견이 나뉘어서 이에 대해 직접 확인해 보는 시간을 가졌다. 먼저 Context의 개념을 알아보고, 코드를 보면서 상태 변화에 따른 렌더링이 어떻게 발생하는지 알아보자. 그 이후에 useMemo, memo 등을 적용해 보면서 최적화하고, Context가 상태 관리 라이브러리를 대체할 수 있는지 생각해 보자. Context 알아보기 Context란 props drilling: 상위 컴포넌트에서 제공하는 데이터를 하위 컴포넌트로 필요한 위치까지 계속해서 넘기는 것 Context API는 이를 극복하기 위해 등장한 개념이다. 명시적 props 전달 없이도 하위 컴포넌트 모두에서 자유롭게 원하는 값을 사용할 수 ..