티스토리 뷰

본 글의 내용은 절대적으로 좋은 코드라는 보장이 없습니다. 글을 읽어보시다가 "이 사람은 이런 식으로 짰구나. 되게 허접하게 짰네?" 라는 생각이 드시면 댓글을 통해서 좋은 가르침과 의견을 주시면 감사합니다!!

 

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

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

 

기본 아이디어

  • DFS를 활용
  • 한 번 방문한 곳을 visited에다가 기록

 

import sys
sys.stdin = open('input_1012.txt', 'r')

sys.setrecursionlimit(10000)

def dfs(x, y):
    farm[y][x] = 1

    for d in range(4):
        new_x = x + dx[d]
        new_y = y + dy[d]
        if -1 < new_x < M and -1 < new_y < N and farm[new_y][new_x] and not visited[new_y][new_x]:
            visited[new_y][new_x] = 1
            dfs(new_x, new_y)

T = int(input())

for _ in range(T):
    M, N, K = map(int, input().split())

    farm = [[0 for _ in range(M)] for _ in range(N)]
    visited = [[0 for _ in range(M)] for _ in range(N)]
    dx = [0, 0, -1, 1]
    dy = [-1, 1, 0, 0]

    for _ in range(K):
        x, y = map(int, input().split())
        farm[y][x] = 1

    count = 0
    for j in range(N):
        for i in range(M):
            if not visited[j][i] and farm[j][i]:
                dfs(i, j)
                count += 1
    print(count)

 

유의사항

  • 깊이 초과 때문에 sys.setrecursionlimit(10000)를 따로 지정해줬다.
반응형

'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글

[python] boj 10422 괄호  (0) 2021.04.18
[python] boj 17103 골드바흐 파티션  (0) 2021.04.18
7569번: 토마토  (0) 2020.10.23
7576번: 토마토  (0) 2020.10.22
boj_11724_연결 요소의 개수  (0) 2020.10.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함