일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BFS
- 장고
- 백준
- DFS
- Planned
- 파이썬
- 알고리즘
- MyPlaylist
- 동적계획법
- SQL
- 실습
- 그리디알고리즘
- 프로그래머스
- 코드트리
- codetree
- django
- 함밥
- 소프트웨어공학
- Kruskal
- B대면노래방
- 모각코
- minimum spanning tree
- 최소스패닝트리
- 백트래킹
- 종합설계
- DP
- 데이터베이스
- 마라마라빔
- Bellman-Ford
- programmers
Archives
- Today
- Total
Leta Learns
[Python] 백준 2583번 - 영역 구하기 본문
문제 https://www.acmicpc.net/problem/2583
아 아래가 0이고 위가 m, n이라서 인덱스 정리 다 해주어야 하는 줄 알고 한참 헤맸었는데
생각해보니까 굳이 인덱스 안 바꿔주어도 되는 문제였다.
영역만 구하면 되는 거니까 그림이 뒤집혀 있어도 상관 없었기 때문에..
쨌든 그거 해결하고 나니 순조로웠다.
bfs 함수 만들 때 자동적으로 가장 마지막 (n, m)인 경우 break를 넣어주었더니 여기서 에러가 났다.
: bfs 형식 암기의 폐해
그 부분 지우면 끝.
출력 쉽게 하려고 * 사용해서 하는 방법이 있는지 찾아보다가 얻어 걸린 문법 설명을 첨부한다.
2022.01.24 - [Python] - print(*)
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
from collections import deque
def bfs(x, y):
global areas
visited[x][y] = 1
area = 1
q = deque()
q.append((x, y))
while q:
x, y = q.popleft()
# if x == n-1 and y == m-1: (이 부분)
# break
dxdy = [(0, -1), (0, 1), (-1, 0), (1, 0)]
for dx, dy in dxdy:
new_x = x + dx
new_y = y + dy
if -1 < new_x < len(grid) and -1 < new_y < len(grid[0]):
if grid[new_x][new_y] == 0 and not visited[new_x][new_y]:
visited[new_x][new_y] = 1
q.append((new_x, new_y))
area += 1
areas.append(area)
m, n, k = map(int, input().split())
grid = [[0 for _ in range(n)] for _ in range(m)]
visited = [[0 for _ in range(n)] for _ in range(m)]
areas = []
for _ in range(k):
lx, ly, rx, ry = map(int, input().split())
for i in range(ly, ry):
for j in range(lx, rx):
grid[i][j] = 1
for i in range(m):
for j in range(n):
if grid[i][j] == 0 and not visited[i][j]:
bfs(i, j)
print(len(areas))
print(*sorted(areas))
'Coding > 백준' 카테고리의 다른 글
[Python] 백준 1260번 - DFS와 BFS (0) | 2022.01.27 |
---|---|
[Python] 백준 10026번 - 적록색약 (0) | 2022.01.25 |
[Python] 백준 11724번 - 연결 요소의 개수 (0) | 2022.01.20 |
[Python] 백준 8979번 - 올림픽 (0) | 2022.01.19 |
[Python] 백준 1747번 - 소수&팰린드롬 (0) | 2022.01.17 |
Comments