본문 바로가기

카테고리 없음

[BEAKJOON] 백준 1012 - 유기농 배추

반응형

 

 

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

 

1012번: 유기농 배추

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

www.acmicpc.net

 

 

 

 


 

처음에 선언을 해줄 때,

빈값인 값으로 리스트를 초기화하기 위해서는 아래와 같이 해주어야 한다.

for 문을 꼭 사용해서,,

cabbage = [[0] * m for _ in range(n) ]

 

나는 새로운 도전을 하고자 새로운 방식으로 해줬는데

cabbage = [[0] * m]*n

 

어,, 한 열을 다 똑같다고 생각해서 바꾸기 때문에 조심해야 한다.


 

조심해야 할 점은, 행은 y축, 열은 x 축이라는 점이다.

그래서 처음에 배열을 초기화해줄 때, 보통 array [x][y]를 생각해주는데,

array [y] [x] 축으로 생각해서 해주어야 한다. 

 

아래의 코드를 제출하면 로컬에서는 잘 작동하지만,

백준에서 진행할 시에는 재귀 에러가 난다. 

dx = [001, -1]
dy = [1, -100]

def dfs(cabbagem_xm_y):
    if m_x < 0 or m_x >= len(cabbage[0]) or m_y < 0 or m_y >= len(cabbage):
        return 0

    if cabbage[m_y][m_x] == 1:
        cabbage[m_y][m_x] = 0
        for i in range(4):
            nx = m_x + dx[i]
            ny = m_y + dy[i]
            dfs(cabbagenxny)
        return 1
    return 0

num = int(input())

while(num):
    num -= 1

    # input
    mnk = map(intinput().split())
    
    cabbage = [[0] * m for _ in range(n) ]

    # O(k) * num
    for _ in range(k):
        xy = map(intinput().split())
        cabbage[y][x] = 1

    count = 0
    # process
    for i in range(m):
        for j in range(n):
            count += dfs(cabbageij)
    print(count)

 

해당 문제를 백준 사이트에서 찾아보니

상단에 아래의 코드를 추가하면 된다고 한다.

 

import sys
sys.setrecursionlimit(10**6)

 

끝!

반응형