https://www.acmicpc.net/problem/27737
27737번: 버섯 농장
첫 번째 줄에 $N$, $M$, $K$가 공백으로 구분되어 주어진다. 두 번째 줄부터 $N$개의 줄에 나무판의 각 칸의 상태가 공백으로 구분되어 주어진다. 버섯이 자랄 수 있는 칸은 0, 버섯이 자랄 수 없는 칸
www.acmicpc.net
from collections import deque
import sys
input = sys.stdin.readline
N, M, K = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
di = [-1,1,0,0]
dj = [0,0,1,-1]
visited = [[0] * N for _ in range(N)]
ans = 'POSSIBLE'
def bfs(i,j):
q = deque([(i,j)])
visited[i][j] = 1
cnt = 1
while q:
i, j = q.popleft()
for w in range(4):
ni, nj = i+di[w], j+dj[w]
if 0<=ni<N and 0<=nj<N and visited[ni][nj] == 0:
if arr[ni][nj] == 0:
q.append((ni,nj))
visited[ni][nj] = 1
cnt += 1
return cnt
flag = 1
for i in range(N):
for j in range(N):
if arr[i][j] == 0 and visited[i][j] == 0:
cnt = bfs(i,j)
# M -= (cnt + K - 1) // K 이렇게 줄여도 될 듯
if cnt % K == 0:
M -= cnt // K
flag = 0
else:
M -= (cnt // K) + 1
flag = 0
if M < 0 or flag == 1:
ans = 'IMPOSSIBLE'
print(ans)
if ans == 'POSSIBLE':
print(M)
75%에서 죽어라 안풀리길래 뭐가 문젠가 질문게시판을 봤더니 답을 찾았다...
농사 성공 조건에 버섯 포자를 하나라도 사용하고 가 있었다...
난 알고리즘이고 뭐고 국어를 먼저 공부해야 되는 게 아닐까...
놓친 조건때문에 삽질한 적이 한두번이 아니야ㅠㅠ..
'백준' 카테고리의 다른 글
백준 15903. 카드 합체 놀이 (0) | 2024.03.05 |
---|---|
백준 1072. 게임 (0) | 2024.03.05 |
백준 7562. 나이트의 이동 (0) | 2024.03.03 |
백준 1012. 유기농 배추 (0) | 2024.03.03 |
백준 1926. 그림 (0) | 2024.03.02 |