stocknuguri   3년 전

import sys
from collections import deque

w, h = map(int,input().split())
room = [[*map(int,sys.stdin.readline().split())]for _ in' '*h]
queue = deque([])

drow = [-1,1,0,0]
dcol = [0,0,-1,1]


for row in range(h) :
    for col in range(w) :
        if room[row][col] == 1 :
            queue.append((row,col,0))


while queue :
    row, col, count = queue.popleft()
    for j in range(4) :
        nrow = row + drow[j]
        ncol = col + dcol[j]
        if 0 <= nrow < h and 0 <= ncol < w :
            if  room[nrow][ncol] == 0 :
                room[nrow][ncol] = 1
                queue.append((nrow, ncol, count+1))
                day = count+1


answer_type = 0

for row in range(h) :
    for col in range(w) :
        if room[row][col] == 0 :
            print(-1)
            answer_type = 1
            break

if answer_type == 0 :
    print(day)

herdson   3년 전

반례입니다.

6 4
0 0 -1 0 0 0
0 0 0 -1 0 0
0 0 0 0 -1 0
0 0 0 0 0 -1

stocknuguri   3년 전

import sys
from collections import deque

w, h = map(int,input().split())
room = [[*map(int,sys.stdin.readline().split())]for _ in' '*h]
queue = deque([])
day = 0
drow = [-1,1,0,0]
dcol = [0,0,-1,1]


for row in range(h) :
    for col in range(w) :
        if room[row][col] == 1 :
            queue.append((row,col,0))


while queue :
    row, col, count = queue.popleft()
    for j in range(4) :
        nrow = row + drow[j]
        ncol = col + dcol[j]
        if 0 <= nrow < h and 0 <= ncol < w :
            if  room[nrow][ncol] == 0 :
                room[nrow][ncol] = 1
                queue.append((nrow, ncol, count+1))
                day = count+1


def check(day) :
    for i in range(h) :
        for j in range(w) :
            if room[i][j] == 0 :
                return -1
    return day

print(check(day))

stocknuguri   3년 전

죄송합니다 herdson 님 .. for 문에 break가 안쪽에 있었군요.. 밑은 아예 생각안하고 위만 바꾸다 보니까

처음 코드에는 전역 변수도 지워놨네요 어떻게 돌아간지 의문인데 아무튼 밑으로 바꿔서 해결 됐습니다 감사합니다 ㅠㅠㅠㅠ

djm03178   3년 전

데이터가 틀렸다는 의심은 쉽게 할 것이 아닙니다. 게시판의 반례들이 모두 맞는다는 것은 의심의 근거가 될 수 없습니다. 무엇보다 맞은 사람이 14482명이나 되는 동안 문제 제기가 없었다는 것과, 파이썬으로 푼 사람도 엄청나게 많은 가운데 같은 문제를 겪은 사람이 없었다는 것은 입력 파일상의 문제가 있었을 가능성도 희박하다는 것을 의미합니다.

항상 자신이 틀렸다는 것을 인정하고 시작해야 문제를 찾아나설 수 있습니다.

stocknuguri   3년 전

넵 당연한 사실을 몇시간동안 다른거 건드리다가 너무 화나서 실수 했습니다 ㅠㅠㅠㅠ... 감사합니다 

댓글을 작성하려면 로그인해야 합니다.