BFS(Breadth-First Search) 그래프 탐색 알고리즘 중 하나로, 너비 우선 탐색이라고도 합니다. 이 알고리즘은 그래프를 너비 방향으로 탐색하여 시작 노드에서부터 레벨별로 탐색을 진행합니다. BFS는 시작 노드에서부터 가까운 이웃 노드부터 순차적으로 방문하며, 레벨별로 탐색하면서 최단 경로를 찾는 데 유용합니다. BFS의 동작 방식은 다음과 같습니다: 시작 노드를 방문하고, 방문한 노드를 큐(Queue)에 추가합니다. 큐에서 노드를 하나씩 꺼내어 방문하고, 해당 노드의 모든 이웃 노드를 큐에 추가합니다. 큐가 빌 때까지 위 과정을 반복합니다. BFS는 레벨 단위로 탐색하기 때문에, 같은 레벨에 있는 노드들을 모두 탐색한 후에 다음 레벨로 넘어갑니다. 이로 인해 시작 노드로부터의 최단 경로를..
문제 출처 Lv.2 타겟 넘버 - JavaScript https://school.programmers.co.kr/learn/courses/30/lessons/43165 BFS 풀이 https://naho199345.tistory.com/entry/%E3%84%B7 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로..
문제 출처 Lv.2 귤 고르기 - JavaScript https://school.programmers.co.kr/learn/courses/30/lessons/138476 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 ‘k’개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다..
다익스트라 알고리즘 네트워크에서 최단 경로를 찾는 알고리즘이며, 이 알고리즘은 엣지 가중치의 합이 최소가 되는 경로를 찾아줍니다. 즉, 그래프의 한 정점에서 다른 정점으로 가는 가장 짧은 경로를 찾는 문제를 해결하는데 사용됩니다. 1. 초기화: 시작 노드의 거리를 0으로, 나머지 모든 노드의 거리를 무한대로 설정합니다. 시작 노드를 현재 노드로 설정합니다. 2. 현재 노드에서 인접한 노드들의 거리를 계산합니다. 이 때, 기존에 설정한 거리보다 새로 계산한 거리가 짧으면 거리 정보를 업데이트합니다. 3. 모든 인접 노드에 대해 거리를 업데이트한 후에는 방문하지 않은 노드 중 거리가 가장 짧은 노드를 새로운 '현재 노드'로 설정합니다. 4. 모든 노드를 방문할 때까지 이 과정을 반복합니다. 다음과 같은 그래..