inseonyun / Algorithm

알고리즘 문제 풀이
0 stars 0 forks source link

[DFS & BFS] 백준 : 2573_빙산 #33

Closed inseonyun closed 2 years ago

inseonyun commented 2 years ago

Source URL : https://www.acmicpc.net/problem/2573

inseonyun commented 2 years ago

문제 요구사항

접근 방법

풀이 순서

  1. 맵의 크기인 N과 M을 입력 받는다.
  2. 맵의 정보인 각 원소의 값을 입력 받는다.
  3. 무한 루프인 while 문(년도)를 돌면서 각 년도마다 빙산의 높이를 깍는다.
  4. BFS 수행
    • 북 동 남 서 방향 순으로 탐색하며, 0이 밀접해있다면, 해당 위치의 빙산을 -1 한다.
    • 이때, 초기에 입력 받은 map 2차원 배열에 값을 갱신하는 것이 아닌, 복사 해둔 2차원 배열에 해당 정보 갱신
  5. 복사 하여 빙산의 높이를 모두 깎은 배열 정보를 다시 map 배열에 붙여 넣는다.
  6. DFS 수행
    • map의 정보를 copyMap에 붙여넣는다.
    • 해당 copyMap을 탐색하며, 빙산이 두 덩이로 나뉘어졌는지 check 한다.
  7. 빙산이 두 덩이 이상이라면 while문 종료.
  8. 반대로, 두 덩이 미만이고, 모든 빙산이 다 녹은 상태라면 year에 0을 대입하고 종료,
  9. 반대로, 두 덩이 미만이지만, 모든 빙산이 다 녹은 상태가 아니라면, 분리된 빙산의 개수를 0으로 초기화하고 while문 다시 탐색
  10. 이와 같은 작업 반복
inseonyun commented 2 years ago

[문제 풀이 결과]

image