[백준 알고리즘] 2583번 영역 구하기, 파이썬(python)
글 작성자: 망고좋아
반응형

2583, 영역 구하기
📁 문제 출처
💡 생각
- 예시에 있는 그래프를 위로 뒤집으면 좌측 상단이 (0, 0)인 그래프가 된다
- 그렇다면 입력을 받을 때 x1, y1, x2, y2 이렇게 받고 그래프에 그려줄 때는 2중 for문으로 (y1, y2) (x1, x2) 이렇게 받으면 예시와 같은 그래프를 그려줄 수 있다.
🛠 나의 코드
from collections import deque import sys input = sys.stdin.readline m, n, k = map(int, input().split()) dx = [0, 0, 1, -1] dy = [1, -1, 0 , 0] def bfs(graph, a, b): queue = deque() queue.append((a, b)) graph[a][b] = 1 cnt = 1 while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx < 0 or nx >= m or ny < 0 or ny >= n: continue if graph[nx][ny] == 0: graph[nx][ny] = 1 queue.append((nx, ny)) cnt += 1 return cnt graph = [[0] * n for i in range(m)] for i in range(k): x1, y1, x2, y2 = map(int, input().split()) for i in range(y1, y2): for j in range(x1, x2): graph[i][j] = 1 result = [] for i in range(m): for j in range(n): if graph[i][j] == 0: result.append(bfs(graph, i, j)) print(len(result)) result.sort() for i in result: print(i, end=' ')
✔️ 배운 점 및 주의할 점
- 예시를 직접 펜으로 그려보고 이것저것 많은 시도를 해보면 아이디어를 얻을 수 있다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 10026번 적록색약, 파이썬(python) (0) | 2021.08.25 |
---|---|
[백준 알고리즘] 2468번 안전 영역, 파이썬(python) (0) | 2021.08.25 |
[백준 알고리즘] 7562번 나이트의 이동, 파이썬(python) (0) | 2021.08.24 |
[백준 알고리즘] 4963번 섬의 개수, 파이썬(python) (0) | 2021.08.22 |
[백준 알고리즘] 11724번 연결 요소의 개수, 파이썬(python) (0) | 2021.08.21 |
댓글
이 글 공유하기
다른 글
-
[백준 알고리즘] 10026번 적록색약, 파이썬(python)
[백준 알고리즘] 10026번 적록색약, 파이썬(python)
2021.08.25 -
[백준 알고리즘] 2468번 안전 영역, 파이썬(python)
[백준 알고리즘] 2468번 안전 영역, 파이썬(python)
2021.08.25 -
[백준 알고리즘] 7562번 나이트의 이동, 파이썬(python)
[백준 알고리즘] 7562번 나이트의 이동, 파이썬(python)
2021.08.24 -
[백준 알고리즘] 4963번 섬의 개수, 파이썬(python)
[백준 알고리즘] 4963번 섬의 개수, 파이썬(python)
2021.08.22
댓글을 사용할 수 없습니다.