본문 바로가기

백준 PS일지/DFS&BFS

(34)
[백준/Swift] 18405 : 경쟁적 전염 BOJ_18405() 18405 : 경쟁적 전염/ 문제 소개 풀이 과정 코드 구현 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 18405 : 경쟁적 전염/ 문제 소개 이 문제는 시험관 안에 초기 바이러스들이 존재한다. 이때 바이러스는 1~K 번까지 반드시 존재한다. 이때 주의할 점이 특정 바이러스 종류가 여러 개 존재할 수 있다. 왼쪽 그림은 k = 3일때 초기 바이러스 위치이다. 1초마다 바이러스들은 상 하 ..
[백준/Swift] 6593 : 상범 빌딩 BOJ_6593() 6593 : 상범 빌딩/ 문제 소개 풀이 과정 코드 구현 https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 6593 : 상범 빌딩 / 문제 소개 이 문제는 토마토와 상당히 유사한 문제입니다. 상범이는 " S " 지점에서 " . " 땅을 거쳐 " E "에 도착하면, 도착 하기까지 x분을 Escaped in x minute(s). 로 출력하는 문제입니다. 만일 탈출을 하지 못할 경우 Trapped! 출력을 하면 됩니다. 풀이 과정 주어..
[백준/Swift] 5014 : 스타트링크 Todo : bfs탐색 5014 : 스타트링크/문제 소개 코드 구현 https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 5014 : 스타트링크/문제 소개 총 F층 도착 위치 G층 강호의 위치 S층 한번에 올라갈 수 있는 층 수 U층 한번에 내려갈 수 있는 층 수 D층 중요한 점은 1층 부터~ F층까지라는 점입니다. 1층 이하로 내려갈 수 없고 또 F층 이상으로 올라갈 수 없습니다. U 또는 D를 통해서 원하는 G층까지 탐색해가면 답을 찾거나 "use the s..
[백준/Swift] 16234 : 인구이동 BFS로 인구이동 문제 풀기 16234 : 인구이동 / 문제 소개 풀이 과정 코드 구현 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 16234 : 인구이동 / 문제 소개 N*N크기에서 각 1*1 칸의 땅은 '나라'가 존재한다. 이 칸마다 고유한 인구수가 존재한다. 국경선이 열리면 그 인접한 나라들 끼리는 연합을 이룬다 이때 인구이동이 시작된다. 그리고 연합에 포함되는 국가의 인구수는 (연합의 인구수) / (연합을 이루고 있는 ..
[백준/Swift] 2146 : 다리 만들기 https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 이 문제는 맵에 최소 2개 이상의 섬이 존재하는데 이 섬들 중에서 섬들을 연결 할 수 있는 최소 다리 개수를 구하는 문제입니다. 저는 bfs를 사용했습니다. 우선 bfs를 통해 각 섬과 인접한 0에 대한 좌표들을 queue에 저장하고, 각 섬의 정보 또한 [[Bool]]타입으로 저장했습니다. 섬이 여러개 존재하므로 위에서 인접한 좌표들을 담은 큐 여러개를 하나의 배열에 추가했습니다. 섬의 정보 또한 저..
[백준/Swift] 5427 : 불 백준 5427 : 불 문제 소개 풀이 과정 코드 구현 https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net 문제 소개 매 초마다 불은 동서남북 인접한 빈 공간으로 퍼져 나갑니다. 상근이 또한 동서남북 인접한 빈 공간으로 이동할 수 있습니다. 이때 불은 벽에 붙을 수 없고 상근이 또한 벽 통과 x 불 붙으려는 칸 이동할 수 없습니다. 하지만 상근이가 있는 자리에서 1초가 지나 불이 상근이쪽으로 올 때 (동시에)상근이는 다른 칸으로 이동할 수 있습니다. 이 문제는 ..
[백준/Swift] 1697 : 숨바꼭질 Todo List 문제 소개 풀이 과정 코드 구현 개선해야 할 것 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 소개 한 수평선의 어딘가에 수빈이랑 동생이 있습니다. 수빈이는 걷거나, 순간이동을 해서 동생을 찾아야 하는데 이때 가장 빠른시간을 구하는 문제입니다. (맨 처음에 서로 다른 x,y축인줄..) 이 문제도 BFS로 풀 수 있습니다. 제가 기존에 풀었던 문제 대부분은 탐색을 하기 위해 "상, 하, 좌, 우..
[백준/Swift] 3055 : 탈출 백준 BFS 탈출 문제 문제 소개 풀이 과정 코드 구현 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 문제 소개 매 분마다 물이 고인 곳에서 주변 으로 한칸씩 범람하는데, 고슴도치 또한 돌, 물이 없는 곳을 통해 한 칸 씩 이동할 수 있습니다. 최종적으로 고슴도치가 비버의 굴로 이동하면 걸린 시간을 출력 else "KAKTUS"를 출력하는 bfs 문제입니다. 문제에서 주어진 키워드 R행 C열 비어있는 지역 = . 물이 차있는 지역 = * 돌이 있는 지역 ..