본문 바로가기

백준 PS일지/DFS&BFS

(34)
[백준/Swift] 14502 : 연구소 안녕하세요 https://www.acmicpc.net/problem/14502 이 문제는 3개의 벽을 설치함으로써 바이러스가 퍼진 후에 남은 안전 영역이 max가 되는 값이 무엇인지 찾는 문제입니다. 개인적으로 어려웠던 점은 벽 3개 설치하기 위한 포문 선언 과정이었습니다. 맨 처음에 dfs탐색을 하며 0이 보이면 1을 설치하는 경우로 문제를 접근했었는데.. 이때 방황을 많이햇었습니다.(시험기간이기도해서) 3주뒤? 다시 풀어봤는데 차라리 벽을 미리 설치하는 것은 어떤지 ?! 완전 탐색의 개념을 적용해서 문제를 풀었더니 성공적으로 맞췄습니다. 근데 Swift로 문제 푼 사람들 중에 제 코드가 가장 길더군요..ㅠㅠㅠ 발전해야겠습니다....ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ (짧게 단축할 정도로의 실력을 갖추고 싶네요..) ..
[백준/Swift] 2583 : 영역 구하기 문제 2583 : 영역 구하기 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 안녕하세요. 이번 문제는 dfs나 bfs 를 이용하면 쉽게 풀 수 있습니다. 문제 파악 그림에서 주어진 K개(위의 문제에선 K = 3)의 직사각형을 제외한 나머지 부분이 몇개의 영역으로 나누어지는지, 넓이는 몇인지 " 오름차순"으로 정렬 후 출력하는것이 문제입니다. 그림 좌표 크기를 담을 수 있는 2차원 배열(변수 : map)을 사용했습니다. 각 ..
[백준/Swift] 2573 : 빙산 여러분 안녕하세요~~ 이번 문제는 dfs/bfs 문제 2573 : 빙산 입니다. https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 한탄하는중,, 괄호 스킵하셔도 됩니다. (하.. 이 문제를 제가 .. 이전에 토마토 https://www.acmicpc.net/problem/7576 이 문제를 풀었던 기억이 갑자기 떠오르면서 비슷한 문제인가? 문제를 제데로 파악 하지 않고 그림1 과 그림 2를 보고,, 토마토 문제처럼 한 해가 지날 때마다 모든..
[백준/Swift] 10026 : 적록색약 안녕하세요! https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 간단한 문제 해석으로 시작하겠습니다 적록색약을 가진 사람은 빨간색과 초록색을 같은 색으로 인식합니다. 주어진 image이미지는 N x N 형태로 이루어져 있습니다. 구역 을 구해야 하는데, 같은 색상이 상 하 좌 우 인접해 있는 경우 두 글자를 같은 구역에 속한다고 표현합니다. 이때 적록색약의 경우 빨간색과 초록색을 같은색으로 인식하기에 이에 대한 조건을 걸어주셔야 합니다. 이..
[백준/Swift] 7562 : 나이트의 이동 여러분 안녕하세요 최근에 dfs&bfs 문제에 빠져서 계속 풀다가 시험기간이라.. 3주간 공부를 못해서 복습할 겸 풀어봤습니다. https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 간단한 문제 설명부터 시작하겠습니다!! 체스판 크기가 주어져야 하고, 그위에 처음 나이트 위치가 주어집니다. 나이트가 이동할 수 있는 칸은 가운데 점을 시작점으로 총 8번 움직일 수 있습니다! (튜플로 쉽게 ㅎㅎ,,) let direction =[(1번 칸 좌표),(2번 ..
[백준/Swift] 2589번 : 보물섬 안녕하세요. https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 문제 풀기 전에 간단하게 문제를 해석하면서 시작하겠습니다. 보물섬 지도는 육지(L) 과 바다(W)로 구성되어있습니다. 보물섬에서의 이동은 육지(L) , 상 하 좌 우로 이웃한 육지로만 이동할 수 있습니다. 이때 한 칸 이동시에 1시간이 걸리는데, 가장 긴 시간이 걸리는 육지 두 곳에 보물이 묻혀있습니다. 저는 이 문제를 bfs를 통해 풀었습니다. dfs를 통한 탐색은 최대한 한 길만 파는..
[백준/Swift] 1926번 : 그림 안녕하세요!! https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제 풀기 전에 간단하게 문제를 해석하면서 시작하겠습니다. 도화지 (paper) 안에 그림은 1로 색칠된 부분입니다. 이 그림은 가로, 세로 (상 하 좌 우) 로 연결되어있고, 대각선 연결은 다른 그림으로 간주됩니다. 도화지의 모든 좌표를 탐색하면서, visited라는 배열을 통해 dfs 탐색을 하지 않은 좌표라면 그 좌표를 시작점으로 주변 그림의 크기를 측정해 나갔습니다. 저는 처음에 ..
[백준/Swift] 14716번 : 현수막 안녕하세요 https://www.acmicpc.net/problem/14716 14716번: 현수막 혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라. www.acmicpc.net 문제 풀기 전에 간단하게 문제를 해석하면서 시작하겠습니다. 현수막을 필터링 했을 때!! 글자 == 1 아닌 경우 0 으로 되는 필터링이 있다고 합니다. 글자 1 은 상하, 좌우, 대각선으로 서로 인접해있는 경우 글자 한개로 측정됩니다. 글자의 개수가 몇개인지 구하는 문제입니다. 이 문제를 보고 주어진 문자는 그래프에서 특정 노드가 연결됬다고 생각해서 bfs 탐색을 통해 접근해 나아갔습니다. 여기서 주의할 점은 대각선까지 탐색범위에 포함된다는 것입니다. import Foundation //..