본문 바로가기

분류 전체보기61

[JAVA] 깊이 우선 탐색 (DFS, Depth-First Search) 깊이 우선 탐색 (DFS, Depth-First Search)깊이 우선 탐색이란루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완번하게 탐색하는 방법미로를 탐색할 때 한 방향으로 갈 수 있을 떄까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로 부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다.즉, 넓게(wide) 탐색하기전에 깊게(deep) 탐색하는 것이다.사용하는 경우: 모든 노드를 방문 하고자 하는 경우에 이 방법을 선택한다.깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 조금 더 간단하다.단순 검색 속도 자체는 너비 우선 탐색(BFS)에 비해서 느리다.깊이 우선 탐색(DFS)의 특징자기 자신을.. 2024. 5. 16.
[JAVA] 너비 우선 탐색 (BFS, Breadth-First Search) 너비 우선 탐색 (BFS, Breadth-First Search)너비 우선 탐색이란루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법이다.즉, 깊게(deep) 탐색하기 전에 넓게(wide) 탐색하는 것이다.사용하는 경우: 두 노드 사이의 최단경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택한다.지구상에 존재하는 모든 친구 관계를 그래프로 표현한 후 Ash와 Vanessa 사이에 존재하는 경로를 찾는경우깊이 우선 탐색의 경우 - 모든 친구 관계를 다 살펴봐야 할지도 모른다.너비 우선 탐색의 경우 - Ash와 가까운 관계부터 탐색너비 우선 탐색(BFS)이 깊이 우선 탐색(DFS.. 2024. 5. 16.
[JAVA] 유클리드 호제법(Euclidean Algorithm) 유클리드 알고리즘과 호제법☞  유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다.☞  호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.최대공약수(GCD: Greatest Common Divisor) & 최소공배수(LCM: Least Common Multiple)란?☞ 최대공약수(GCD: Greatest Common Divisor): 두 수의 공통된 '약수 중에서 가장 큰 수'를 의미한다.☞ 최소공배수(LCM: Least Common Multiple): 두 수의 공통된 '배수 중에서 가장 작은 수'를 의미한다.두 수의 최대공약수, 최소공배수 구하기최대공약수(GCD) 구현 방법1. 반복문으로 구현b가 0이 될.. 2024. 5. 16.
[Oracle] 해커랭크(HackerRank) 문제 풀이 - Binary Tree Nodes You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node:Root: If node is root node.Leaf: If node is leaf node.Inner: If node is neither root nor leaf node.Sample InputSample Output1 Leaf.. 2023. 3. 27.