[백준] 2468번, 안전영역 (Python)

2021. 7. 8. 12:37·알고리즘/백준
728x90
반응형

문제

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

 

2468번: 안전 영역

재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는

www.acmicpc.net

 

코드

import collections

n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]

def bfs(x, y, k):
    queue = collections.deque()
    queue.append((x,y))
    count = 1
    dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
    while queue:
        x, y = queue.popleft()
        check[x][y] = True
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < n and 0 <= ny < n:
                if graph[nx][ny] > k and check[nx][ny] == False:
                    queue.append((nx,ny))
                    check[nx][ny] = True
                    count += 1
    return count

# 입력값중에 가장 큰값을 구해준다.
curMax = 0
for i in range(n):
    for j in range(n):
        curMax = max(curMax, graph[i][j])

lenCurMax = 0
# 비의 범위는 가장 높은 건물의 크기만큼으로 정해준다
for k in range(curMax+1):
    check = [[False] * n for _ in range(n)]
    result = []
    for x in range(n):
        for y in range(n):
            if graph[x][y] > k and check[x][y] == False:
                result.append(bfs(x,y,k))
    lenCurMax = max(lenCurMax, len(result))
    
print(lenCurMax)

내리는 비의 양에 따라 안전한 영역의 최대 갯수를 구하는 문제이다.

 

bfs를 실행할때 비의양도 k도 포함해 bfs를 실행한다

graph에 값이 k보다 크다면 안전영역이므로 bfs안에서 건물의 갯수를 count를 세어주는데 결과값으로는 필요한 값은 아니다.

 

결과값은 안전한 영역의 갯수이기 때문에 영역안에 건물에 갯수는 중요하지않고 bfs 호출횟수를 result배열 길이로 나타낼 수 있으므로 result에 길이가 가장 큰 값이 안전한 영역의 최대 갯수가 된다. 

반응형
저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 7562번, 나이트의 이동 (Python)  (0) 2021.07.09
[백준] 2636번, 치즈 (Python)  (0) 2021.07.08
[백준] 2667번, 단지번호붙이기 (Python)  (0) 2021.07.08
[백준] 1012번, 유기농 배추 (Python)  (0) 2021.07.06
[백준] 14502번, 연구소 (Python)  (0) 2021.07.06
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 7562번, 나이트의 이동 (Python)
  • [백준] 2636번, 치즈 (Python)
  • [백준] 2667번, 단지번호붙이기 (Python)
  • [백준] 1012번, 유기농 배추 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    버그
    카카오코딩테스트
    백준
    카카오인턴
    orm
    파이썬
    spring
    인프런
    괄호
    회고
    프로그래머스
    스파르타코딩클럽
    조합
    김영한
    정리
    에러
    SFlash
    코딩테스트
    알고리즘
    브루트포스
    항해99
    항해마켓
    그리디
    해결
    jpa
    후기
    실전프로젝트
    java
    미니프로젝트
    SpringBoot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 2468번, 안전영역 (Python)
상단으로

티스토리툴바