본문 바로가기

알고리즘60

[백준 Gold 4] 3584 가장 가까운 공통 조상 - Java 문제링크 : https://www.acmicpc.net/problem/3584 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net 접근 과정 : 부모 - 자식 관계가 주어지고 두 노드가 주어졌을 때, 그 두 노드의 가장 가까운 공통 조상을 찾으면 된다. 저장한 부모-자식 관계를 따라서 노드 A의 조상을 체크한다. DFS로 B의 조상을 탐색하면서 A의 조상체크가 되어있는 조상을 발견하면 리턴한다. 소스 코드 및 결과 : package BOJ; /* 가장 가까운 공.. 2022. 1. 2.
[백준 Gold 4] 1939 중량제한 - Java 문제링크 : https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 접근 과정 : 주어지는 두 섬 A,B를 연결하는 많은 경로 중에서, 이동할 수 있는 중량이 최대인 것을 출력하면 된다. 경로를 진행할 때, 최종적으로 옮길 수 있는 중량은 지나온 다리들의 최소 중량 제한이다. 처음에는 DFS로 경로를 진행하고, 중량을 산출하려고 했다. 갱신된 Answer 값과 현재 진행중인 경로의 중량을 비교.. 2022. 1. 1.
[백준 Gold 4] 5427 불 - Java 문제링크 : https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net 접근 과정 : 단순하게 BFS를 이용한 시뮬레이션이라고 생각했다. 각 테스트 케이스마다 BFS를 이용해서 탈출이 가능한지 시뮬레이션했다. 다만, 다음에 불이 번질 칸으로 이동하지 못하므로 불을 먼저 이동시키고 상근이가 가능한 경로를 탐색했다. 소스 코드 및 결과 : package BOJ; /* 불 */ import java.io.*; import java.util.*; public class BO.. 2022. 1. 1.
[백준 Gold 5] 2589 보물섬 - Java 문제링크 : https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 접근 과정 : 임의의 육지 2개를 고르고, 그 사이의 최단거리가 가장 긴 거리를 탐색하는 문제이다. 육지 하나하나 모두 BFS 해서 최장 거리를 탐색하는 완전탐색 방법으로 풀이할 수 있다. ++ 한 번 거리가 측정된 경로는 다시 탐색하지 않고 사용하는 것이 시간을 줄일 수 있는 포인트.. 이 부분에 대해서는 좀 더 고민이 필요하다. 소스 코드 및 결과 : package BOJ; /* 보물.. 2021. 12. 29.