목록코테 (3)
nathan_H
벌써 2020 절반이 끝나고 7월의 첫 주가 지나갔다. 작년과는 달리 올해는 '취업'이라는 카테고리가 들어오게 되면서, 상반기에 많은 생각과 시행착오가 있었다. 방향성 작년 새로운 분야로 공부를 시작했는데, 누구나 그렇듯 처음에는 의욕과 열정이 넘쳐 욕심을 부리기 마련이다. 욕심과 열정은 나쁜 것은 아니지만 제대로 된 자기 객관화와 방향성이 없다면 그때부터 문제가 발현되기 시작한다. 나는 처음에 데이터 분야 쪽에 관심이 생겨 소프트웨어 공부를 시작했다. 하지만 데이터 쪽에도 데이터 과학, 데이터 분석, 데이터 엔지니어, 데이터 사이언스와 같이 다양한 직군이 존재했고, 직군 이외에도 이미지, 자연어, 시계열, 음성 등 도메인도 정말 다양하기 때문에 방향성을 잘 정하는 것(모든 것을 잘할 수 없기 때문에)이..
최근 알고리즘 문제를 풀면서 벽에 부딪히는 느낌이 많이 들었는데, 그 중 Dynamic Programming이라는 유형의 문제는 쉽게 감이 잘 잡히지 않는 유형 중 하나였다. 그럼에도 불구하고 Dynamic Programming은 중요한 알고리즘 디자인 패러다임이기에 한 번 제대로 이해하고 문제도 풀어볼 가치가 있다. Dynamic Programming 사실 Dynamic Programming 이름만 가지고는 다른 "이분 탐색", "분할 정복", "너비 우선 탐색"과 같이 무엇을 의미하는 잘 다가오지 않는데, Dynamic Programming이라는 말은 최적화 문제를 연구하는 수학 이론에서 왔으며 전산학 전반에서 일반적으로 사용하는 Dynamic, 혹은 Programming이란 단어와는 아무런 관련이 ..
시작하기 알고리즘을 풀다보면 그래프 자료구조를 사용하는 경우가 많고, 그래프 자료구조를 사용하는 문제의 상당수는 DFS, BFS을 구현해 문제를 해결하는 경우가 많다. 그리고 문제의 난이도가 올라갈수록 단순한 DFS, BFS가 아닌 다양한 형태로 변형한 DFS, BFS을 요구한다. 그래서 DFS, BFS 개념과 몇가지 유형을 통해 한번 DFS, BFS을 뿌시고자 한다. Graph 자료형 그래프 자료형의 경우 선형 자료구조나 트리 자료구조로 표현하기 어려운 多:多의 관계 를 가지는 원소들을 표현하기 위한 자료구조로 객체의 정점과 객체를 연결하는 간선의 집합이다. 그래프 객체를 나타내는 정점(vertex)과 객체를 연결하는 간선(edge)의 집합 𝐺 = (𝑉,𝐸) − 𝑉는 그래프에 있는 정점들의 집합 − 𝐸..