[백준] 3184번: 양 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제  3184번: 양첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다.www.acmicpc.net  풀이  큐를 이용한 너비 우선 탐색(BFS)으로 해결하였다. 반복문을 통해 울타리가 아닌 경우에 BFS 탐색을 수행하고 방문을 처리 해준다.  BFS 탐색에서는 큐의 현재 위치에서 네 방향으로 탐색을 수행한다. 만약 울타리가 아닌 경우에 큐에 해당 위치를 넣어준다. 탐색 범위 내에서 양과 늑대의 수를 세어준다. 탐색이 끝났을 때 양의 수가 늑대보다 많은 경우에는 살아 있는 양으로 판단하여 값을 더해주고, 아니 경우에는 늑대의 값을 더해준다. 코..
[백준] 9205번: 맥주 마시면서 걸어가기 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 풀이 문제에서 주어진 집, 편의점, 페스티벌의 좌표를 그래프의 형태로 가공하여 BFS를 활용해 문제를 해결할 수 있다. 상근이는 매 50미터마다 맥주 한 병을 마셔야 하며, 최대 20병의 맥주를 들고 다닐 수 있다. 따라서 시작 위치에서 20 X 50 = 1000미터 이내라면 이동할 수 있는 지점이다. 이를 고려하여 집, 편의점, 페스티벌 장소를 각각의 정점으로 하고 정점 간의 거리가 1000미터 이내에 있으면 도착 가능한 거리라고 간주하여 그래프로 ..
[백준] 3055번: 탈출 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 고슴도치가 비버의 굴로 이동하는 가장 빠른 시간을 찾는 문제로 BFS로 해결할 수 있다. 탐색에서 물이 차는 것도 고려해야하기 때문에 Queue를 물과 고슴도치 두 개를 이용하여 해결한다. 물이 찰 예정인 칸으로 고슴도치는 이동할 수 없기때문에 한 싸이클을 물의 이동 -> 고슴도치의 이동의 순서로 구성하고 탐색을 수행한다. 물이나 고슴도치의 이동은 해당하는 현재 큐의 크기만큼 수행하고 빈공간을 만났을 때 이동한다. 고슴도치는 도착한 시간을 저장해주고 도착 지점에 ..
[백준] 2573번: 빙산 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 BFS나 DFS를 활용해 풀이하면 된다. 탐색에는 방문을 확인하는 visited 배열과 얼마나 녹을지를 저장하는 melted 배열을 이용한다. 탐색은 빙산을 기준으로 하며 방문 지점이 0보다 클 때 visited 배열에 방문 표시를 하고 이어서 탐색해준다. 0 이하인 경우에는 현재 위치의 melted 배열에 1을 증가해준다. 탐색하는 횟수를 세어 2 이상인 경우에는 빙산이 분리된 것이므로 반복문을 종료하고 시간을 출력해준다. 0인 경우에는 빙산이..
[백준] 1743번: 음식물 피하기 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 풀이 입력받은 좌표에 음식물을 표시하고, BFS 탐색을 통해 음식물의 크기를 계산하여 풀이하면 된다. BFS 함수에서는 Queue에서 좌표를 추가할 때마다 갯수를 세어준다. 그리고 BFS 함수에서 음식물의 크기를 반환하도록 하여 최대값을 찾아 출력해주면 된다. 코드 import java.util.* data class Point(val x: Int, val y: Int) fun main() { val br = Sys..