[BOJ]2583. 영역 구하기

Jungmin Lee·2021년 3월 27일
0

APS

목록 보기
12/25
post-thumbnail

BOJ 2583 영역구하기 문제 바로가기
문제의 저작권은 백준 온라인저지에 있습니다.

문제

나의 코드

from sys import *
import sys
setrecursionlimit(10**6)
input = sys.stdin.readline
M,N,K=map(int, input().split())
my_map=[[0]*N for i in range(M)]
visited=[[0]*N for i in range(M)]

# 우 하 좌 상
dx=[0,1,0,-1]
dy=[1,0,-1,0]

# 입력받기
for k in range(K):
    x1, y1, x2, y2 = map(int, input().split())
    for x in range(M-y2, M-y1):
        for y in range(x1, x2):
            my_map[x][y]=1
            visited[x][y]=1

results=[]  # 각영역개수
area=101    # 101부터 영역값넣기
answer=0    # 영역별로 칸수

def DFS(x,y):
    global answer
    for k in range(4):
        newx=x+dx[k]
        newy=y+dy[k]
        if 0<=newx<M and 0<=newy<N and visited[newx][newy]==0 and my_map[newx][newy]==0:
            visited[newx][newy] = 1
            answer += 1
            DFS(newx, newy)


# 범위돌며 영역측정
for x in range(M):
    for y in range(N):
        if my_map[x][y]==0 and visited[x][y]==0:
            answer=1
            visited[x][y]=1
            DFS(x, y)
            area +=1
            results.append(answer)

results.sort()  # 오름차순
print(area-101)
for r in results:
    print(r,end=' ')

sys.exit(0)
profile
금융 도메인과 개발 지식을 함께 쌓아가는 주니어 개발자입니다😊

0개의 댓글