(백준) 안전지대 2468호(보아구름) 관련 이미지

(백준) 안전지대 2468호(보아구름)

https://www.acmicpc.net/problem/2468

2468호: 안전지대

장마철에 대비하여 방재청에서는 다음과 같은 계획을 세우고 있습니다. 먼저 특정 영역의 높이 정보를 파악한다. 그러다가 그 지역에 비가 많이 내리면

www.acmicpc.net

1. 난이도 실버 1 ()

2. 문제 해결 방법

비가 올 경우 강우량이 1 미만이면 침수되는 지역이 없습니다.

1. 따라서 0에 1을 더하고 지도 값이 고정되면 방문과 지도 모두 -1로 변경됩니다.

  for i in range(n):
    for j in range(n):
      if maps(i)(j) <= rain:
        maps(i)(j) = -1
        visit(i)(j) = -1

2. bfs를 사용하여 안전한 지역의 수를 계산하고 강우량을 늘립니다.

3. cnt가 0(모두 잠김)이면 while 문을 중단하고 cnt의 최대값을 출력합니다.

  for i in range(n):
    for j in range(n):
      if maps(i)(j) != -1 and visit(i)(j) == 0:
        bfs((i,j))
        cnt += 1
  
  rain += 1

  if cnt == 0:
    break
  else:
    max_cnt = max(max_cnt, cnt)

print(max_cnt)

3. 내가 작성한 코드

from collections import deque

n = int(input()) #배열의 길이

maps = (list(map(int, input().split())) for _ in range(n))

def bfs(start):

  visit(start(0))(start(1)) = 1
  queue = ()
  queue = deque()
  queue.append(start)

  dx = (-1,1,0,0)
  dy = (0,0,-1,1)

  while queue:

    x,y = queue.popleft()
    for i in range(4):
      nx = x + dx(i)
      ny = y + dy(i)

      if nx<0 or ny<0 or nx>=n or ny>=n:
        continue
    
      if maps(nx)(ny) != -1 and visit(nx)(ny) == 0: #맵이 물에 잠기지 않았고 방문한 적 없는 경우
        visit(nx)(ny) = 1
        queue.append((nx,ny))

rain = 0
max_cnt = 0

while True:
  visit = ((0) * n for _ in range(n)) #매 번 visit는 초기화 시켜줌
  cnt = 0

  for i in range(n): #rain보다 높이가 낮으면 visit, maps 모두 -1
    for j in range(n):
      if maps(i)(j) <= rain:
        maps(i)(j) = -1
        visit(i)(j) = -1

  for i in range(n): #전체 maps을 돌며 떨어져있는 안전영역을 찾음
    for j in range(n):
      if maps(i)(j) != -1 and visit(i)(j) == 0:
        bfs((i,j))
        cnt += 1 # 안전영역의 개수만큼 cnt를 증가시킴
  
  rain += 1

  if cnt == 0: #모두 물에 잠길경우 break
    break
  else:
    max_cnt = max(max_cnt, cnt)

print(max_cnt)


안전지대 2468호 관련 대표 이미지

BFS/DFS를 배우기 시작하면서 이것을 알아 내려고 노력하고 있습니다. 무엇을 부탁해야할지 모르고 떠났기 때문에 당시에는 문제였습니다.

오늘 주제를 볼 때 간단한 질문은 안전 영역의 수를 찾는 것입니다(백준 2667 복수 및 유사한 질문)

Similar Posts

  • 망고의 10가지 이점 및 부작용 망고 보관 방법

    안녕하세요 여러분 건강수집가입니다. 오늘은 망고의 10가지 효능과 부작용, 그리고 보관방법에 대해 알아보도록 하겠습니다. 망고의 효능 및 부작용 망고 효과 망고는 건강에 유익한 많은 영양소와 맛을 가지고 있기 때문에 다양한 효능을 가지고 있습니다. 다음은 그 중 10가지입니다. 1. 면역력 강화 망고에는 비타민 A, 비타민 C, 카로티노이드 등 면역 체계에 필수적인 영양소가 풍부하여 면역력 강화에 도움을 줍니다….

  • 잔나케

    #공공 정보 ⊱ ── {.⋅ 백일몽의 앨리스⋅.} ── ⊰ “말해, 잘 듣고 있어~”도착하다? … 아직 아무 말도 안 했어요? 이름_> 마리넬라 렘 스칼렛┊마리넬라 렘 스칼렛 당신이 그것을 부르고 싶은대로 그것은 Marlin이라고 불립니다. 중간 이름 Rem은 항상 대문자입니다. Rapid Eye Movement의 약어가 자신의 의지와 일치하는 것처럼. 나이_> 21 성별_>XX 키와 몸무게_> 165 / 트림 무게 외부_>…

  • 남성용 흑염소 추출물 리뷰

    흑염소 추출물과 흑염소 추출물을 소개합니다. 여기까지 읽으셨다면 흑염소추출물과 흑염소추출물에 대해 아실겁니다. 흑염소 에센스와 흑염소 추출물이 궁금하시다면 끝까지 읽어주세요.지금 아래설명하겠습니다. 흑염소 프로그레스를 직접 맛보았는데, 자연스레 꼼꼼함이 가득합니다. 이것은 Forive 검은 염소 추출물입니다. ~의 ~의 포라베 흑염소 추출물 상자에서 꺼내면 Forive의 천연 목초 흑염소 추출물이 들어 있습니다. 흑염소는 우리나라 고유의 염소 품종이다. 염소는 검은 털, 강한 체격,…

  • 아이폰 SE3 전 6s 사용자 평가 : “폰 바꾼거 사실이야?”

    2018년년도 처음부터 지금까지 에 대한 5년도 기간 기본 전화를 사용 쓰다 오는 아이폰 6초. 최근까지 ‘기본 고쳐 쓰다 지원 최대 오래된 아이폰 기종‘도착하다 이름 뒤쪽에 아이폰 OS 15던지다 마침내 작년 라스에서 지원하다 마치다 모델이다. 2015몇 년 동안 해방 2022년연도별로 에 대한 7년도 ~ 사이 지원하다 아래에 삶 모두 할 것 완벽한 그것은 마치 ‘2년도 지원하다‘이것…

  • 링곤베리의 효능

    오늘은 링곤베리의 효능에 대해 배웁니다. 링곤베리의 효능 링곤베리란? 링곤베리는 크랜베리와 비슷한 맛을 낸다. 링곤베리는 핀란드의 깨끗하고 자연스럽게 자생하는 베리입니다. 추운 자연환경을 위해 베리류를 즐기고 먹는 북유럽 중, 핀란드에서 즐기고 먹는 베리류로 매 식사마다 빠지지 않고 식탁에 오른다고 합니다. 사과 베리는 재배되지 않은 100 % 야생 베리이며 천연 베리입니다. 엘리자베스 여왕이 즐기고 섭취했다고 퀸즈베리라고도 불리는 건강…

  • 짙은 매력, 흑토마토의 놀라운 효능 7가지 파헤치기

    평범한 빨간 토마토는 이제 그만! 요즘 마트나 온라인에서 심상치 않은 비주얼로 시선을 사로잡는 녀석이 등장했습니다. 바로 검붉은 빛깔의 흑토마토인데요. 처음 보는 분들은 ‘이게 토마토라고?’ 하고 놀라실지도 몰라요. 하지만 이 신비로운 녀석, 알고 보면 그 안에 숨겨진 건강 효능이 어마어마하다고 합니다. 일반 토마토와는 차원이 다른 매력을 가진 흑토마토, 지금부터 그 모든 것을 파헤쳐 보겠습니다! 흑토마토, 과연…