Dizzy999
dizzy-theme
Dizzy999
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Machine Learning (1)
      • 논문 리뷰 (0)
      • 수학통계 이론 (1)
      • 짧은글 (0)
    • 알고리즘 (22)
      • 알고리즘 이론 (1)
      • 알고리즘 문제 (20)
      • 짧은글 (1)
    • 프로그램 (2)
      • 프로그래밍 용어 및 상식 (1)
      • C++ (1)
    • 미니프로젝트 (0)
      • Moon Tracker (0)
    • Theme (0)
      • 짧은글 (0)
    • 아두이노&라즈베리파이 (1)
      • 아두이노 (0)
      • 라즈베리파이 (1)
    • Miscellaneous (3)
      • 이과가 이해한 Color (3)
    • OpenCV (0)
      • Tutorial (0)
    • Manim (5)
      • Tutorial (5)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dizzy999

dizzy-theme

알고리즘/알고리즘 문제

[백준-2583] 영역 구하기 - Python

2021. 12. 7. 08:31

 

 

 

 

문제 소개

 

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

 

2583번: 영역 구하기

첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오

www.acmicpc.net

 

 

 

 

사용한 알고리즘

 

더보기

 

BFS

 

 

 

 

 

 

Code 

 

import sys
import collections



#sys.stdin = open("input.txt", "r")

input=sys.stdin.readline

M , N , K = map(int,input().split(" "))
Arr =[]
for i in range(M):
    Arr.append([0]*N)
rect = []
for _ in range(K):
    rect.append(list(map(int,input().split(" "))))


def rectFill(list0) :
    for xi in range(list0[0],list0[2]):
        for yi in range(list0[1],list0[3]):
            #print(xi,yi)
            Arr[yi][xi]=1


for i in range(len(rect)):
    rectFill(rect[i])

AreaList = []
def bfs(x0,y0):
    Q = collections.deque([])
    Q.append([x0,y0])
    Area=1
    Arr[x0][y0]=2
    dx=[0,0,1,-1]
    dy=[1,-1,0,0]
    while Q:
        cx,cy = Q.popleft()
        for k in range(4):
            newx=cx+dx[k]
            newy=cy+dy[k]
            if 0<=newx<M and 0<=newy<N and Arr[newx][newy]==0:
                Q.append([newx,newy])
                Arr[newx][newy] = 2
                Area += 1
    AreaList.append(Area)


for xx in range(M):
    for yy in range(N):
        if Arr[xx][yy]==0:
            bfs(xx,yy)

AreaList.sort()
print(len(AreaList))
print(*AreaList)

 

 

 

※ end

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 > 알고리즘 문제' 카테고리의 다른 글

[백준-1260] DFS와 BFS - Python  (0) 2021.12.08
[백준-11724] 연결 요소의 개수 - Python  (0) 2021.12.07
[백준-4485] 녹색 옷 입은 애가 젤다지? - Python  (0) 2021.11.17
[백준-1238] 파티 - Python  (0) 2021.11.17
[백준-2668] 숫자고르기 - Python  (0) 2021.11.12
    '알고리즘/알고리즘 문제' 카테고리의 다른 글
    • [백준-1260] DFS와 BFS - Python
    • [백준-11724] 연결 요소의 개수 - Python
    • [백준-4485] 녹색 옷 입은 애가 젤다지? - Python
    • [백준-1238] 파티 - Python
    Dizzy999
    Dizzy999

    티스토리툴바