츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 1743번 음식물 피하기 파이썬(Python)
1) 문제번호 : 1743번
2) 문제 출처
https://www.acmicpc.net/problem/1743
1743번: 음식물 피하기
첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ 10,000)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진
www.acmicpc.net
2. 문제
코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다.
이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다.
통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다.
선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자.
3. 제약사항
4. 입력
첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ 10,000)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다.
좌표 (r, c)의 r은 위에서부터, c는 왼쪽에서부터가 기준이다.
5. 출력
첫째 줄에 음식물 중 가장 큰 음식물의 크기를 출력하라.
6. 풀이
- 쓰레기가 있는 곳에 1로 표시하고, board에서 완전 탐색을 하는데 1이 있는 경우에 BFS를 돌린다.
- BFS를 돌리면서 4방 탐색을 하고, 1이 있으면 계속 큐에 넣어 쓰레기 개수를 1씩 증가시킨다.
- 그리고, BFS를 다 돌았으면 result와 최대 비교를 하여 최대값을 찾는다.
7. 소스 코드
import sys
input=sys.stdin.readline
N, M, K = map(int, input().split()) # 통로의 세로 및 가로 길이, 음식물 쓰레기 개수
# 통로
board = [[0] * M for _ in range(N)]
# 방문체크
visit = [[0] * M for _ in range(N)]
# 쓰레기 위치 입력
for _ in range(K) :
a, b = map(int, input().split())
board[a-1][b-1] = 1
dx = [-1,1,0,0] # 상, 하, 좌, 우
dy = [0,0,-1,1] # 상, 하, 좌, 우
queue = []
def BFS(x,y) :
global v # 쓰레기 개수
queue.append([x,y])
visit[x][y] = 1
v += 1
while queue :
x, y = queue[0][0], queue[0][1]
del queue[0]
for i in range(4) :
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<N and 0<=ny<M and visit[nx][ny] == 0 and board[nx][ny]==1:
queue.append([nx,ny])
visit[nx][ny] = 1
v += 1
result = 0 # 총 쓰레기 개수
v = 0 # 쓰레기 개수
for i in range(N) :
for j in range(M) :
if board[i][j] == 1 :
BFS(i,j)
result = max(result, v) # 최대 비교
v = 0
print(result)
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 10866번 덱 파이썬(Python) (0) | 2021.07.03 |
---|---|
[백준 알고리즘] 백준 11650번 좌표 정렬하기 파이썬(Python) (0) | 2021.07.03 |
[백준 알고리즘] 백준 15680번 연세대학교 파이썬(Python) (0) | 2021.07.02 |
[백준 알고리즘] 백준 1620번 나는야 포켓몬 마스터 이다솜 파이썬(Python) (0) | 2021.06.30 |
[백준 알고리즘] 백준 16956번 늑대와 양 파이썬(Python) (0) | 2021.06.29 |
[백준 알고리즘] 백준 11004번 K번째 수 파이썬(Python) (0) | 2021.06.28 |
[백준 알고리즘] 백준 13752번 히스토그램 파이썬(Python) (0) | 2021.06.25 |
[백준 알고리즘] 백준 2576번 홀수 파이썬(Python) (0) | 2021.06.25 |
최근댓글