[백준] 1012, 1085 - Python3

shsh·2021년 9월 24일
0

백준

목록 보기
2/45

1085. 직사각형에서 탈출

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

내 풀이 - 성공

x, y, w, h = map(int, input().split())

ans = min(x, y, w-x, h-y)

print(ans)

(x, y) 와 직사각형의 경계선까지의 경우는 총 4 가지이므로
그 중 최솟값을 찾아서 출력


1012. 유기농 배추

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

내 풀이 - 성공

import sys
sys.setrecursionlimit(10**6)

def func(field, i, j):
    field[i][j] = 0

    if i > 0 and field[i-1][j]:
        func(field, i-1, j)
    if j > 0 and field[i][j-1]:
        func(field, i, j-1)
    if i < len(field)-1 and field[i+1][j]:
        func(field, i+1, j)
    if j < len(field[0])-1 and field[i][j+1]:
        func(field, i, j+1)

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

    field = []
    for _ in range(N):
        field.append([0]*M)

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

    a = 0

    for i in range(N):
        for j in range(M):
            if field[i][j]:
                a += 1
                func(field, i, j)
    ans.append(a)

for a in ans:
    print(a)

field 값이 1 이면 재귀 돌려서 인접한 모든 배추들을 0 으로 바꿔주기

그때마다 a + 1 해주며 세준 지렁이를 ans 에 저장해서 한번에 출력

여기서 포인트는

import sys
sys.setrecursionlimit(10**6)

다!!!

파이썬의 기본 재귀 깊이 제한은 1000으로 매우 얕은 편이므로
setrecursionlimit => Python이 정한 최대 재귀 깊이를 변경해줘야 함

참고) https://help.acmicpc.net/judge/rte/RecursionError

profile
Hello, World!

0개의 댓글