Maven Dependencies를 가져오지 못할 때 어디부터 봐야 하는가 Notes Maven 프로젝트를 열었는데 의존성이 내려받아지지 않으면, 처음에는 단순히 IDE 문제처럼 보일 수 있다. 하지만 실제 원인은 저장소 설정, 네트워크, 프록시, 로컬 캐시, 버전 좌표 오류 등 다양하다. 가장 먼저 확인할 것 groupId, artifactId, version이 맞는가 중앙 저장소나 사설 저장소에 실제로 존재하는가 네... 2020/05/22 Notes, Common
Git의 기본을 어떻게 이해해야 하는가 Notes Git은 단순히 코드를 저장하는 도구가 아니라, 변경 이력을 관리하고 협업의 기준점을 만드는 도구다. 기본 개념을 흐리게 이해하면 명령어는 외워도 실제 상황에서 자주 꼬인다. 가장 중요한 세 가지 작업 디렉터리: 현재 수정 중인 파일 상태 스테이징 영역: 다음 커밋에 포함할 변경 커밋: 특정 시점의 이력 스냅샷 이 세 단계를 구분하... 2020/05/04 Notes, Common
C++의 vector를 어떻게 이해해야 하는가 Notes vector는 C++에서 가장 자주 쓰는 컨테이너 중 하나다. 개념적으로는 동적 배열(dynamic array)에 가깝다. vector의 핵심 연속된 메모리 공간을 사용한다 크기를 동적으로 늘릴 수 있다 인덱스 접근이 빠르다 즉, 배열의 장점과 동적 확장의 편의성을 함께 가져가는 구조다. 왜 자주 쓰이는가 대부분의 문제 풀이와 ... 2020/04/29 Notes, Programming
순열(Permutation) Notes 순열은 임의의 수열을 서로 다른 순서로 섞는 것이다. 순열은 브루트 포스 문제를 풀어야 하는데 순서가 매우 중요한 의미를 가질 때 사용할 수 있다. 예를 들어, 123과 132가 서도 다른 의미를 가지는 경우가 그렇다. N개의 수에 대한 순열을 사전순으로 나열하면 총 N!개가 나온다. 숫자로만 이루어진 4자리 비밀번호를 찾는 다면 0000에서부터 99... 2020/04/20 Notes, Programming
동적 계획법(Dynamic Programming) Notes 동적 계획법(Dynamic Programming, DP)은 큰 문제를 작은 문제로 나누어서 푸는 방식의 알고리즘이다. 동적 계획법은 처음 주어진 문제를 더 작은 문제들로 나눈 뒤 각 조각의 답을 계산하고, 이 답들로부터 원래 문제에 대한 답을 계산해 낸다는 점에서 분할 정복(Divide & Conquer, D&C)과 비슷하다. 하지만 가... 2020/04/07 Notes, Programming
재귀(Recursion) Notes 가능한 방법을 전부 만들어 보는 알고리즘 들을 가리켜 ‘완전 탐색(exhaustive search)’ 라고 부른다. 손으로 직접 풀기에는 경우의 수가 너무 많은 경우, 완전 탐색은 (컴퓨터의 처리속도를 이용하여)충분히 빠르면서도 구현하기 쉬운 대안이 된다. 간단한 예로, 열 명의 학생을 한 줄로 세우려고 하는데, 특정한 두 명을 인접하지 않도록 세우... 2020/04/01 Notes, Programming
너비 우선 탐색(BFS) Notes 너비 우선 탐색(breadth-first search, BFS)는 시작점에서 가까운 정점부터 순서대로 방문하는 탐색 알고리즘이다. 가까운 정점을 모두 저장해놓고 순서대로 방문해야 하므로, 스택 구조로는 구현이 어렵다. 따라서 큐(Queue) 자료구조를 사용한다. BFS의 동작은 큐를 이용해서 지금 위치에서 갈 수 있는 것을 모두 큐에 넣는 방식으로,... 2020/03/30 Notes, Programming
연결 요소(Connected Component) Notes 그래프 중에서는 위 그림과 같이 여러 개로 나누어져 있을 수도 있다. 위 그림을 보고 두 개의 그래프라고 볼 수도 있지만, 하나의 그래프에 두 개의 연결 요소를 가진다고 볼 수도 있다. 그 이유는 정점 사이에 겹치는 것이 없기 때문이다. 연결 요소로 본다면, 나누어진 각각의 그래프를 연결 요소라고 한다. 이때 연결 요소가 될 조건은 다음과 같다. ... 2020/03/30 Notes, Programming
깊이 우선 탐색(DFS) Notes 트리의 순회와 같이 그래프의 모든 정점들을 특정한 순서에 따라 방문하느 알고리즘을 그래프의 탐색(search) 알고리즘이라고 한다. 트리와는 달리, 그래프에서는 탐색 과정에서 얻어지는 정보가 매우 중요하다. 탐색 과정에서 어떤 간선이 사용되었는지, 또 어떤 순서로 정점들이 방문되었는지를 통해 그래프의 구조를 알 수도 있다. 예를 들어, 미로 찾기를 한... 2020/03/30 Notes, Programming
그래프(Graph) Notes 그래프(Graph) 자료구조 그래프(Graph)는 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현하는 자료구조이다. 여러 도시들을 연결하는 도로망, 사람들 간의 관계, 웹 사이트 간의 링크 관계 등이 그러한 연결 구조이다. 그래프는 계층 구조인 트리와는 다르게 부모 자식 관계에 관한 제약이 없다. 그러므로 훨씬 다양한 구조를 표현할 수 있... 2020/03/30 Notes, Programming