본문 바로가기
반응형

Algorithm25

[리트코드] Medium 236. Lowest Common Ancestor of a Binary Tree - 자바(JAVA) 문제 설명이진 트리가 주어졌을 때, 주어진 두 노드의 최저 공통 조상(LCA, Lowest Common Ancestor)을 찾아라.Wikipedia의 LCA 정의에 따르면:“최저 공통 조상(LCA)은 트리 T에서 두 노드 p와 q 사이에 정의되며, p와 q 모두의 자손인 노드 중에서 가장 낮은(가장 깊은) 노드를 의미한다. 여기서 노드는 자기 자신을 자손으로 간주할 수 있다.” 제한사항 트리의 노드 수는 [2, 105] 범위입니다.-10⁹ 모든 Node.val은 고유합니다.p != qp와 q는 트리에 존재합니다. 문제 파악두 노드 p, q의 최저 공통 조상(LCA)을 찾는 문제이다.LCA는 p와 q가 자손인 노드 중 가장 아래에 있는 노드이다. (자기 자신도 자손으로 친다.) 접근 방법재귀 탐색(DFS).. 2025. 5. 23.
[리트코드] Easy 104. Maximum Depth of Binary Tree - 자바(JAVA) 문제 설명이진 트리의 루트 노드가 주어졌을 때, 해당 트리의 최대 깊이를 반환하세요.이진 트리의 최대 깊이는 루트 노드에서 가장 먼 리프 노드까지의 경로에 포함된 노드 수를 의미합니다. 제한사항트리의 노드 수는 0 이상 10,000 이하의 범위에 있습니다.-100 문제 파악이진 트리의 최대 깊이(depth)를 구하는 문제이다.최대 깊이는 루트 노드에서 가장 깊은 리프 노드까지의 노드의 수를 의미한다. 접근 방법재귀 호출 방식으로 최대 깊이를 구한다.왼쪽, 오른쪽 서브트리의 최대 깊이를 구해서 둘 중 더 큰 값을 선택해 1을 더한다. 코드 구현/** * Definition for a binary tree node. * public class TreeNode { * int val; * Tree.. 2025. 5. 20.
[알고리즘] 그래프 문제를 위한 DFS, BFS 템플릿(구현 코드) - 자바(JAVA) 코딩 테스트 준비를 위해 알고리즘을 배우며 그래프 파트를 공부하다 보니DFS, BFS 기본 템플릿을 모르면 문제를 손도 못 대겠더라구요...!그래서 이건 무조건 외워야겠다 싶어서 따로 정리했습니다. 이 템플릿만 알아도 그래프 문제 풀이의 시작점은 잡을 수 있습니다.저도 여러 번 직접 쳐보면서 외웠습니다! 1. DFS (깊이 우선 탐색)static boolean[] visited;public static void dfs(int node, ArrayList[] graph) { visited[node] = true; // 방문 표시 for (int next : graph[node]) { if (!visited[next]) { dfs(next, graph); // 아직.. 2025. 5. 18.
[프로그래머스] Lv2. 미로탈출 - 자바(JAVA) 문제 설명1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는 칸을 지나갈 수 있습니다. 미로에서 한 칸을 이동하는데 1초가 걸린다고 할 때, 최대한 빠르게 미로를 빠져나가는 데 걸리는 시간을 구하려 합니다. 미로를 나타낸 문자열 배열 maps가 매개.. 2025. 5. 18.
[리트코드] Medium 1091. Shortest Path in Binary Matrix - 자바(JAVA) 문제 설명n x n 크기의 이진 행렬 grid가 주어졌을 때, 이 행렬에서 가장 짧은 "청정 경로(clear path)"의 길이를 반환하세요. 만약 청정 경로가 존재하지 않는다면 -1을 반환하세요.청정 경로란 다음 조건을 만족하는 (0, 0)에서 (n - 1, n - 1)로 가는 경로입니다:경로에 포함된 모든 셀의 값이 0이어야 합니다.경로상의 모든 인접 셀들은 8방향(상하좌우 및 대각선)으로 연결되어 있어야 합니다.청정 경로의 길이는 해당 경로에 포함된 방문한 셀의 개수입니다. 제한사항n == grid.lengthn == grid[i].length1 grid[i][j]는 0 또는 1문제 파악(0, 0)에서 (n-1, n-1)까지 값이 0인 곳만 지나서 갈 수 있는 최단 경로의 길이를 구하는 문제이다.대.. 2025. 5. 13.
[프로그래머스] Lv3. 단어 변환 - 자바(JAVA) 문제 설명두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다.예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변.. 2025. 5. 11.
반응형