![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dOzosH/btqMN3o0zJB/wSkUrsVEjl9MK6jAQ7Bt4K/img.png)
난이도 : 골드 4 도시들을 연결하여 주어진 도시가 하나로 이어져 있는지 확인하는 문제입니다. 이러한 문제는 유니온 파인드(Union-Find)를 이용하여 풀 수 있습니다. 유니온은 도시들을 묶고 파인드는 이러한 도시의 대표를 찾습니다. 그룹의 대표를 그 그룹에서 가장 작은 값으로 정했습니다. 대표는 그룹마다 통일성을 가진다면 어떤 값으로 해도 상관은 없습니다. 단, 이 대표를 통하여 그룹을 구분할 수 있어야 합니다. 예를 들면 [1, 2, 3, 4, 7, 8], [5, 6], [9]의 그룹은 각 그룹의 대표를 1, 5, 9로 설정합니다. 각 그룹의 대표를 저장하는 parent배열을 위와 같이 나타내 볼 수 있습니다. 최적화를 위해 그룹의 대표를 건드릴 때는 find를 이용합니다. parent 절대 xx..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GgOdN/btqMi0HMxa1/9axp7tUwHypFcAsYIClzyK/img.png)
난이도 : 골드 3 다익스트라 알고리즘을 이용해 풀었습니다. 2020/11/02 - [문제풀이/자바] - [백준 1753] 최단경로 (자바) [백준 1753] 최단경로 (자바) https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째.. jellyinghead.tistory.com 위 링크에 다익스트라 설명이 있습니다. 1~N을 출발점으로 파티 마을 X까지의 거리를 다익스트라로 구했습니다. 그리고 반대로 파티 마을 X를 출발점으로 다익스트라를 돌려서 각 마을까지의 거리를 구했습니다. 그리고 이 두 값을 마을..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bOuO22/btqMqBT26f8/4D8guLdVBUp13fXogaSnb0/img.png)
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 난이도 : 골드 5 다익스트라 알고리즘을 이용해 풀었습니다. 다익스트라 알고리즘은 음의 가중치가 없을 때 최단 경로를 탐색할 수 있습니다. 그중 저는 우선순위 큐를 이용하여 풀었습니다. 아래의 그래프는 1에서 출발할 때의 가중치의 값입니다. 출발지 정점에서 연결된 정점의 가중치 값 입력 방문하지 않았고 가장 작은 가중치의 값을 가지고 있는 정점 방문 방문한 정점에서 연결..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/o65o1/btqK3EE2mF5/2vIipSIfxl9GnriCn5uw3K/img.jpg)
https://www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 난이도 : 골드 2 위상 정렬을 이용해 풀 수 있는 문제입니다. 하지만 세 가지 조건에 따라 풀어야 하는데 먼저 푸는 문제를 먼저 풀고 쉬운 문제부터 풀어야 합니다. 이 부분은 우선순위 큐를 이용하여 풀었습니다. 예제로 확인해보겠습니다. 4-2, 3-1 순으로 문제를 풀어야 합니다. 쉬운 문제부터 풀어야 하므로 우선순위 큐에는 3, 4가 들어갑니다. 3번을 풀고 연결..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/CNk1I/btqKVP7UEh2/QgYGke03YLK83MKgSazqO0/img.jpg)
https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 난이도 : 골드 1 Set을 이용한 BFS로 문제를 풀다가 오류를 만났습니다. 도저히 방법이 없어 검색해보니 비트 마스킹으로 쉽게 풀 수 있는 문제였습니다. 방문 검사는 3차원 배열을 통해 진행합니다. a~f까지 6개의 열쇠가 있으므로 [N][M][111111]의 크기를 가집니다. 비트 연산을 통해 key를 저장하고 문을 여는 것이 목표입니다. key를 넣는 과정은 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/beo2HH/btqKteHBteD/7siKzmhkxmhguBakHRcFtK/img.jpg)
https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에� www.acmicpc.net 난이도 : 골드 4 BFS를 이용해 풀었습니다. 2020/08/01 - [문제풀이/자바] - [백준 3055] 탈출 (자바) [백준 3055] 탈출 (자바) https://www.acmicpc.net/problem/3055 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고 jellyinghe..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dqbRiL/btqJXWUd65T/POrEp0eHmzhHBZtKODnY9K/img.jpg)
https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이�� www.acmicpc.net 난이도 : 골드 2 위상 정렬을 통해 풀 수 있는 문제입니다. 위상 정렬은 순서가 정해져 있는 작업을 차례로 수행해야 할 때 사용할 수 있는 알고리즘입니다. 위상 정렬 설명을 위해 입학부터 졸업까지의 예시를 들어봤습니다. 물론 기사 신청에는 기능사 자격증이 필요없습니다. '입학' -> '1학년' -> '2학년' -> '기능사 자격증' -> '3학년' -> '4학..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/O27iJ/btqJhIW89g4/aMeK4KC03RW3EX2uMXYVYK/img.jpg)
https://www.acmicpc.net/problem/2589 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 난이도 : 골드 5 BFS를 이용한 브루트 포스입니다. 땅의 한 지점에서 BFS로 퍼져나가며 가장 큰 수가 가장 먼 거리입니다. 모든 지점에서 BFS를 통해 먼 거리를 최신화시켜줍니다. 전역 변수 n, m = 지도의 가로, 세로의 크기 answer = 가장 먼 거리(답) st = 땅의 좌표를 저장하는 스택 dx, dy = 좌표 이동시 사용할 배열 메소드 void main 입력 값을 받고 L(땅) 일 때 스택에 push 합니다. 모든 좌표값에 대해 먼 거리를 탐색하여 답을 찾고 출력합니다. (find 호출) void ..