문제이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어..
DP란?DP란, Dynamic Programming의 약자로, 동적 계획법이라고합니다. DP가 어떤 단어의 약자이고 그것이 어떻게 불리는지에 대해서는 알겠는데, 너무 추상적이고 뭐가 동적으로 계획된다는 건지 이해가 되지 않을 수 있습니다. DP는 큰 문제를 조그만한 문제로 나누어, 답을 구하고 계산된 결과를 기록하고 재활용하며, 문제의 답을 찾아가는 방식으로 진행됩니다. 이런 구조적인 특성상 계산에서 나온 결과를 저장하기 위해서는 중간 계산 결과를 저장하기 위한 추가적인 메모리를 필요로 하게 됩니다.최근 한국에서 코딩테스트 시험을 볼 때, 시간 복잡도에 대해서는 다소 타이트하게 주어질 수 있지만, 공간 복잡도에 대해서는 상당히 널널하게 주는 편이므로, 어떤 문제를 풀어나갈 때, 다른 방법이 존재하더라도..
개념 - BFS란?BFS란, Breadth-First Search의 약자로 너비 우선 탐색을 의미합니다.BFS는 그래프 구조에서 사용하는 탐색 알고리즘 중 하나로 루트노드부터 리프노드까지 동일한 레벨들의 노드들을 탐색을 진행하는 알고리즘이다. 루트노드에서 간선을 타고, 다음 노드로 이동하게 된다면, 동일한 거리만큼 떨어져있는 노드들을 전부 조사하고, 해당 노드들의 방문 여부를 처리하면서 탐색을 진행하는 알고리즘입니다. 순서1. 특정 노드 혹은 루트 노드에서 시작2. 해당 노드로부터 동일한 거리(레벨)에 떨어져 있는 노드 조사 후 큐에 삽입3. 반복문을 통해 해당 노드들에서 갈 수 있는 노드들이 있는지 조사4. 모든 노드들을 방문했다면 종료 이러한 순서대로 BFS를 진행한다. 하지만 이렇게만 보면 정확하..
백엔드 개발자의 필수 역량: 어떤 것들이 필요할까?IT 업계에서 백엔드 개발자의 수요가 날로 증가하면서, 백엔드 개발자가 되기 위한 경쟁도 치열해지고 있습니다. 그렇다면 백엔드 개발자로 성장하기 위해 어떤 역량을 쌓아야 할까? 오늘은 백엔드 개발자로서 갖춰야 할 기본적인 역량 중 '자료구조', '알고리즘', 그리고 '코딩테스트'에 관하여 알아보겠습니다.자료구조: 데이터를 효율적으로 관리하는 기초데이터는 백엔드 시스템의 토대입니다. 따라서, 데이터를 효율적으로 저장하고 관리하는 방법을 아는 것은 매우 중요합니다. 자료구조는 이를 가능하게 하는 기술이며, 배열, 연결 리스트, 스택, 큐, 트리, 해시 테이블 등 다양한 형태로 존재합니다. 이들 각각의 특성을 이해하고 적절히 활용할 수 있다면, 데이터를 보다..