Algorithm 74

[프로그래머스][JAVA] 42884. 단속카메라

💡 문제단속카메라(https://school.programmers.co.kr/learn/courses/30/lessons/42884)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념그리디 알고리즘: 그리디 알고리즘은 각 단계에서 최적의 선택을 하는 알고리즘입니다. 현재의 선택이 지역적으로는 최적이지만, 전체적으로는 최적해를 보장하지 않을 수 있습니다. 따라서 그리디 알고리즘을 적용할 때에는 각 단계에서 최적의 선택을 하여 전체 해답을 찾아내는 과정을 이해하고 적용해야 합니다.정렬 알고리즘: 정렬 알고리즘은 주어진 데이터를 특정한 기준에 따라 정렬하는 알고리즘입니다. 이 문제에서는 차량의 경로를 진입 지점을 기준으로 오름차순으로 정렬해야 합니다. 대표적인 정렬 알고리즘으로는 선택 정렬,..

[프로그래머스][JAVA] 42861. 섬연결하기

💡 문제섬연결하기 (https://school.programmers.co.kr/learn/courses/30/lessons/42861)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념그래프 이론(Graph Theory):그래프는 정점(Vertex)과 간선(Edge)의 집합으로 이루어진 자료 구조입니다. 각 간선은 두 개의 정점을 연결하며, 방향이 있는 경우와 없는 경우로 나뉩니다.그래프는 방향성과 가중치가 있는 경우와 없는 경우로 구분됩니다. 이 문제에서는 방향성은 고려하지 않으며, 다리의 비용을 가중치로 취급합니다.최소 비용 신장 트리(Minimum Spanning Tree, MST):그래프의 모든 정점을 연결하는 트리 중에서, 간선의 가중치의 합이 최소인 트리를 의미합니다.이 때..

[프로그래머스][JAVA] 43162. 네트워크

💡 문제네트워크(https://school.programmers.co.kr/learn/courses/30/lessons/43162)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념그래프 이론그래프는 노드(또는 정점)와 간선으로 이루어진 자료 구조입니다. 노드는 개체나 개념을 나타내고, 간선은 이러한 노드들 간의 관계를 나타냅니다.그래프는 방향성이 있는 유향 그래프와 방향성이 없는 무향 그래프로 나뉩니다.컴퓨터 네트워크 문제에서는 주로 무향 그래프를 다루며, 연결된 노드들의 집합을 찾는 문제로 해석됩니다.그래프 탐색그래프 탐색은 그래프 내의 모든 노드를 방문하는 알고리즘입니다. 대표적으로 DFS와 BFS가 있습니다.DFS(깊이 우선 탐색)는 한 노드에서 시작하여 그래프의 최대 깊이까지 ..

[프로그래머스][JAVA] 43163. 단어변환

💡 문제단어변환 (https://school.programmers.co.kr/learn/courses/30/lessons/43163)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념🤓 문제 풀이🔨 문제 설명두 개의 단어 begin과 target, 그리고 단어의 집합 words가 주어집니다. begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾고자 합니다. 변환 과정은 다음과 같은 규칙을 따릅니다:한 번에 한 개의 알파벳만 바꿀 수 있습니다.변환 과정에서 항상 words에 있는 단어로만 변환할 수 있습니다.예를 들어, begin이 "hit", target이 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면, "hit" -> ..

[99클럽 코테 스터디] 📝 Day13. BFS

99클럽 코테 스터디 13일차 TIL + BFS📍 오늘의 학습 키워드BFS (너비 우선 탐색)DFS (깊이 우선 탐색)그래프 탐색 알고리즘최단 경로 문제백트래킹 (Backtracking)📝 공부한 내용 본인의 언어로 정리하기오늘은 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)에 대해 공부했습니다. BFS는 그래프 탐색 알고리즘 중 한 종류로, 현재 노드와 인접한 모든 노드를 먼저 탐색하는 방식입니다. 이를 통해 최단 경로를 찾거나 특정 상태에 도달하는 데 사용됩니다. 반면에 DFS는 현재 노드의 자식 노드를 먼저 탐색하는 방식으로, 그래프의 모든 노드를 탐색하거나 경로를 찾는 데 사용됩니다.오늘 푼 문제는 BFS를 사용하여 최단 경로를 찾는 문제를 풀었습니다.. 문제 해결을 위해 주어진 조건을 ..

Algorithm/Study 2024.06.09

[프로그래머스][JAVA] 87694. 아이템 줍기

💡 문제아이템 줍기 (https://school.programmers.co.kr/learn/courses/30/lessons/87694)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념이 문제를 해결하려면 주로 그래프 탐색 알고리즘과 2차원 배열을 다루는 방법을 이해해야 합니다. 아래는 문제를 푸는 데 필요한 주요 개념들입니다.1. BFS (Breadth-First Search)BFS는 그래프 또는 트리의 탐색 알고리즘 중 하나로, 너비 우선 탐색이라고도 합니다. BFS는 특정 노드에서 시작하여 인접한 모든 노드를 방문한 후, 방문한 노드를 기준으로 다시 인접한 노드들을 방문하는 방식으로 진행됩니다. BFS의 주요 특징은 다음과 같습니다:최단 경로 탐색: BFS는 최단 경로 문제를 해..

[프로그래머스][JAVA] 43164. 여행경로

💡 문제여행경로(https://school.programmers.co.kr/learn/courses/30/lessons/43164)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념1. 그래프 이론그래프: 정점과 간선으로 이루어진 자료구조. 문제에서 공항을 정점, 항공권을 간선으로 볼 수 있습니다.인접 리스트: 각 정점에 대해 인접한 정점들을 리스트로 표현한 자료구조. 이 문제에서는 공항별로 도착 공항 리스트를 관리하기 위해 사용됩니다.2. 탐색 알고리즘깊이 우선 탐색 (DFS (Depth-First Search)):한 정점에서 시작하여 한 방향으로 갈 수 있는 모든 경로를 탐색한 후, 더 이상 갈 곳이 없으면 뒤로 돌아와 다른 경로를 탐색하는 방식. 재귀 호출을 통해 구현됩니다.깊이 ..

[99클럽 코테 스터디] 📝 Day16. 탐욕법 == Kruskal 알고리즘

99클럽 코테 스터디 16일차 TIL + 탐욕법 == Kruskal 알고리즘📍 오늘의 학습 키워드Kruskal 알고리즘Union-Find 자료구조탐욕법 알고리즘최소 비용 신장 트리📝 공부한 내용 본인의 언어로 정리하기오늘은 Kruskal 알고리즘과 Union-Find 자료구조에 대해 공부했습니다. Kruskal 알고리즘은 최소 비용 신장 트리를 구하는 그리디 알고리즘 중 하나로, 각 단계에서 최소 비용의 간선을 선택하여 신장 트리를 만들어 나갑니다. 이 과정에서 사이클을 방지하기 위해 Union-Find 자료구조를 사용합니다. Union-Find는 서로소 집합을 표현하고 관리하는 자료구조로, 각 원소가 속한 집합을 찾거나 합치는 연산을 지원합니다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 ..

Algorithm/Study 2024.06.05

[프로그래머스][JAVA] 84512. 모음사전

💡 문제모음사전 (https://school.programmers.co.kr/learn/courses/30/lessons/84512)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념완전탐색 (Brute Force):- 가능한 모든 경우의 수를 탐색하여 해답을 찾는 방법입니다. 이 문제에서는 'A', 'E', 'I', 'O', 'U'라는 5개의 문자로 만들 수 있는 길이 1부터 5까지의 모든 단어를 생성해야 합니다. 이를 통해 사전의 모든 단어를 구할 수 있습니다. 재귀 함수 (Recursive Function):- 함수가 자기 자신을 호출하여 문제를 해결하는 방법입니다. 이 문제에서는 재귀 함수를 사용하여 길이 1부터 5까지의 모든 단어를 생성합니다. 예를 들어, 현재 단어가 "A"..

📝 Day15. DFS

99클럽 코테 스터디 15일차 TIL + DFS📍 오늘의 학습 키워드그래프 탐색DFS (깊이 우선 탐색)연결된 컴포넌트 찾기인접 행렬📝 공부한 내용 본인의 언어로 정리하기오늘은 컴퓨터 네트워크 문제를 풀면서 DFS 알고리즘을 공부했다. DFS는 그래프에서 시작점부터 가능한 깊이까지 탐색한 후, 다시 돌아와 다른 경로를 탐색하는 방법이다. 이를 통해 연결된 모든 노드를 탐색할 수 있다. 네트워크 문제에서는 연결된 컴포넌트의 개수를 찾기 위해 각 컴퓨터를 방문하며 연결된 컴퓨터들을 모두 방문하는 DFS를 사용했다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지네트워크 문제를 처음 접했을 때, 컴퓨터 간의 연결 상태를 어떻게 효율적으로 탐색할지 고민했다. 처음에는 모든 가능한 경로를 일..

Algorithm/Study 2024.06.03