Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스파르타코딩클럽 #크롤링 #스크래핑
- 스파르타코딩클럽 #코딩 #jQuery #Ajax
- #내일배움단 #코딩프로젝트 #국비지원 #내일배움카드 #스파르타코딩클럽
- 부트스트랩 #Bootstrap #웹개발첫걸음 #스파르타코딩클럽
- 항해99솔직후기 #항해99 #부트캠프추천
Archives
- Today
- Total
이모저모
DFS - 장마철 안전영역 최대수 (백준 2468) 본문
필기를 해보는 건 나한테 너무 필요한 작업이다. 손으로 정리해보면 괜히 정리가 다 된 것 같다는 느낌적인 느낌이 들 때도 있지만,, 역시나 이번에도 손-단계에서는 빠뜨렸던 부분이 아주 퐁퐁 나왔다^--^
'아니 왜 안 될까?' 하다가 디버깅해보면,, 아래 빨간 색처럼 visited 배열만 만들어놓고 조건에서 안 썼다든가 하는, 나의 엉성과 멍청을 깨닫는다ㅎㅎ (친절한 파이참 덕분에 디버깅 해볼 수 있어서 다행이다)
import sys
sys.setrecursionlimit(10**6) ## 제출시에는 recursion error 나오길래 백준의 안내에 따라 이 친구 추가해주었다.
n = int(input())
area = []
for _ in range(n):
row = map(int, sys.stdin.readline().split())
area.append(list(row))
max_h = 0
for row in area:
if max(row) > max_h:
max_h = max(row)
dx = [-1, 1, 0, 0]
dy = [0, 0, 1, -1]
def DFS(x, y):
global rain
if area[x][y] <= rain:
return
else:
visited[x][y] = 1
for i in range(4):
new_x = x + dx[i]
new_y = y + dy[i]
if 0 <= new_x < n and 0 <= new_y < n and area[new_x][new_y] > rain and visited[new_x][new_y] == 0:
DFS(new_x, new_y)
max_ans = 0
for rain in range(max_h):
visited = [[0] * n for _ in range(n)]
count = 0
for i in range(n):
for j in range(n):
if area[i][j] > rain and visited[i][j] == 0:
DFS(i,j)
count += 1
if count > max_ans:
max_ans = count
print(max_ans)
https://www.acmicpc.net/problem/2468
2468번: 안전 영역
재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는
www.acmicpc.net
+ 궁금한 점
sys.setrecursionlimit(10**6) 이거 안 썼을 때는 recursion error 였다.
아무튼 엄청 많이 depth를 들어가는 건 좋은 것 같지 않은데(아닌가? 사실 아직 잘 모르겠다)
재귀를 쓰더라도 더 효율적인 방법을 할 수 있을지(가지치기?), 아니면 재귀가 아닌 방법으로 풀 수 있을지 궁금하다.
(다른 분들 코드를 봐야지!)
'coding > 알고리즘,자료구조' 카테고리의 다른 글
leetcode - 이진트리 반전(Invert Binary Tree) (0) | 2022.01.25 |
---|---|
leetcode - 이진트리의 직경(diameter of binary tree) (0) | 2022.01.25 |
DFS - 백준 암호만들기 (0) | 2022.01.24 |
DFS - 백준 9095. 1,2,3의 합으로 n을 만드는 방법 수 (0) | 2022.01.24 |
BFS 공부 - 미로 최단거리 (0) | 2022.01.24 |
Comments