728x90
반응형
https://www.acmicpc.net/problem/1743
1743번: 음식물 피하기
첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다
www.acmicpc.net
최종 코드
GitHub - hwayeon351/BEAKJOON-Algorithms: 백준 알고리즘 소스 코드 모음
백준 알고리즘 소스 코드 모음. Contribute to hwayeon351/BEAKJOON-Algorithms development by creating an account on GitHub.
github.com
import sys
sys.setrecursionlimit(10001)
input = sys.stdin.readline
def dfs(x, y):
global size
size += 1
for ddx, ddy in zip(dx, dy):
nx = x+ddx
ny = y+ddy
if 1 <= nx <= M and 1 <= ny <= N and graph[ny][nx] and not visit[ny][nx]:
visit[ny][nx] = 1
dfs(nx, ny)
N, M, K = map(int, input().split())
graph = [[0]*(M+1) for _ in range(N+1)]
for _ in range(K):
y, x = map(int, input().split())
graph[y][x] = 1
visit = [[0]*(M+1) for _ in range(N+1)]
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]
answer = 0
for y in range(1, N+1):
for x in range(1, M+1):
if graph[y][x] and not visit[y][x]:
global size
size = 0
visit[y][x] = 1
dfs(x, y)
if answer < size: answer = size
print(answer)
풀이 과정
풀이 시간 8분
import sys
#최대 100x100이므로 재귀 제한을 늘려준다
sys.setrecursionlimit(10001)
input = sys.stdin.readline
def dfs(x, y):
#음식물 크기 1 증가
global size
size += 1
#인접한 4방향 탐색
for ddx, ddy in zip(dx, dy):
nx = x+ddx
ny = y+ddy
#범위 안에 있으면서 음식물이 있는 칸이면서 이전에 방문한적 없다면, 탐색한다
if 1 <= nx <= M and 1 <= ny <= N and graph[ny][nx] and not visit[ny][nx]:
visit[ny][nx] = 1
dfs(nx, ny)
#입력 받기
N, M, K = map(int, input().split())
graph = [[0]*(M+1) for _ in range(N+1)]
for _ in range(K):
y, x = map(int, input().split())
#음식물이 있는 위치 1로 설정
graph[y][x] = 1
visit = [[0]*(M+1) for _ in range(N+1)]
#좌 상 우 하
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]
answer = 0
for y in range(1, N+1):
for x in range(1, M+1):
#이전에 방문한 적 없으면서 음식물이 있는 위치라면 dfs 탐색을 시작한다
if graph[y][x] and not visit[y][x]:
global size
#음식물 크기 초기화
size = 0
visit[y][x] = 1
dfs(x, y)
#현재 음식물 크기가 이전 음식물보다 큰 경우, answer 갱신
if answer < size: answer = size
print(answer)
#시간복잡도 = O(V+E), 공간복잡도 = O(n)
728x90
반응형
'코테 노트 > 백준' 카테고리의 다른 글
백준 1012 유기농 배추 Python 3 (0) | 2022.02.14 |
---|---|
백준 10026 적록색약 Python 3 (0) | 2022.02.14 |
백준 2583 영역 구하기 Python 3 (0) | 2022.02.13 |
백준 7562 나이트의 이동 Python 3 (0) | 2022.02.10 |
백준 2644 촌수계산 Python 3 (0) | 2022.02.10 |