https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이분 탐색
  • 12015
  • 백트래킹
  • LIS
  • 스택
  • 그래프
  • MST
  • 유니온 파인드
  • 최소힙
  • DP
  • 최대공약수
  • 재귀함수
  • 유클리드호제법
  • 재귀
  • 이분탐색
  • 다이나믹프로그래밍
  • python3
  • BFS
  • 다이나믹 프로그래밍
  • 큐
  • 그리디
  • 파이썬
  • 다익스트라
  • 최단경로
  • counter
  • 백준
  • DFS
  • heapq
  • 프로그래머스
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

백준 2583 파이썬 풀이 (영역 구하기, DFS)

2021. 7. 17. 21:02

이번 문제는 주어진 좌표만큼 색칠된 경우 색칠되지 않은 영역의 넓이와 개수를 구하면 된다.

 

1. 좌표를 배열위치로 바꾸기

2. DFS로 탐색하면서 넓이 구하기

 

이 두가지만 하면된다. 좌표는 그림을 그려서 구해보면 쉽게 확인가능하다.

start = [(m-1-b),(0+a)]

end = [(m-d),(c-1)]

로 바꾸면 된다.

 

그럼 DFS로 탐색하는 코드만 추가해주면 끝이다.

m,n,k = map(int, input().split())

Map = [[0 for i in range(n)] for i in range(m)]

for _ in range(k):
    a,b,c,d = map(int, input().split())
    start = [(m-1-b),(0+a)]
    end = [(m-d),(c-1)]
    for i in range(end[0],start[0]+1):
        for j in range(start[1],end[1]+1):
            Map[i][j] = 1
def DFS(x,y):
    s = [[x,y]]
    Map[x][y] = 1
    dx = [0,0,1,-1] #동서남북
    dy = [1,-1,0,0]
    count = 0
    while s:
        count+=1
        x,y = s.pop()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if (0<=nx<m) and (0<=ny<n) and (Map[nx][ny] == 0):
                s.append([nx,ny])
                Map[nx][ny] = 1
    return count
count=[]
for i in range(m):
    for j in range(n):
        if Map[i][j] == 0:
            count.append(DFS(i,j))
print(len(count))
count.sort()
for i in count:
    print(i, end=' ')

DFS를 계속 풀다보니 조금씩 익숙해지는거 같아서 기분이 아주 좋다~

'알고리즘' 카테고리의 다른 글

백준 3055 C++ 풀이 (탈출, BFS)  (0) 2021.07.19
백준 10026 파이썬 풀이 (적록색약, DFS)  (0) 2021.07.17
백준 1987 파이썬 풀이 (알파벳, DFS)  (0) 2021.07.17
백준 2206 파이썬 풀이 (BFS, 벽 부수고 이동하기, 이차 배열 사용)  (0) 2021.07.12
백준 1707 python 풀이 (이분 그래프, BFS)  (0) 2021.07.11
    '알고리즘' 카테고리의 다른 글
    • 백준 3055 C++ 풀이 (탈출, BFS)
    • 백준 10026 파이썬 풀이 (적록색약, DFS)
    • 백준 1987 파이썬 풀이 (알파벳, DFS)
    • 백준 2206 파이썬 풀이 (BFS, 벽 부수고 이동하기, 이차 배열 사용)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바