[Boj문제풀이]

[Boj/백준] 1743 Python

ki7348 2021. 9. 26. 19:46

문제출처: 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

 

 

1. 문제 접근 방식

bfs를 돌리면서 칸마다 count값을 증가시키고 반환한다.

반환값을 리스트에 붙이고 마지막으로 리스트 원소 중 가장 큰 값을 출력한다.

 

 

2. 내가 푼 코드

import sys
from collections import deque

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

def bfs(x,y):
    queue = deque()
    queue.append((x,y))
    graph[x][y] = 0

    cnt = 1
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx=x+dx[i]
            ny=y+dy[i]
            if nx < 0 or ny < 0 or nx>=n or ny>=m:
                continue
            if graph[nx][ny] == 1:
                cnt+=1
                graph[nx][ny] = 0
                queue.append((nx,ny))
    return cnt

n,m,k = map(int,sys.stdin.readline().split())

graph=[]

for _ in range(n):
    graph.append([0]*m)

for _ in range(k):
    x,y = map(int,sys.stdin.readline().split())
    graph[x-1][y-1] = 1

result=[]

for i in range(n):
    for j in range(m):
        if graph[i][j]==1:
            result.append(bfs(i,j))
            

print(max(result))

 

 

3. 결과 및 느낀점

자꾸 틀렸는데 왜 틀렸는지 몰랐었는데 ny>=n이라고 해서 틀렸다.

범위를 꼭 체크하자.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 6118 Python  (0) 2021.09.27
[Boj/백준] 1303 Python  (0) 2021.09.27
[Boj/백준] 3187 Python  (0) 2021.09.24
[Boj/백준] 14502 Python  (0) 2021.09.23
[Boj/백준] 10026 Python  (0) 2021.09.23