[Python 백준] 2667번

체인지영·2021년 5월 6일
0

[Python] 백준

목록 보기
12/12
import sys
N= int(sys.stdin.readline())

case = []
for i in range(N):
    case.append(list(sys.stdin.readline().rstrip()))
print(case)
if case[0][1] == '1':
    print(123124)

def dfs(x,y,ctn):
    if x <=-1 or x>= N or y<=-1 or y>=N :
        return ctn
    if case[x][y] == '1':
        ctn +=1
        case[x][y] ='0'
        dfs(x-1,y,ctn)
        dfs(x,y-1,ctn)
        dfs(x,y+1,ctn)
        dfs(x+1,y,ctn)
        return ctn
    return ctn

total_num = 0
result = 0
house_num = []
for i in range(N):
    for k in range(N):
        ctn =0
        result = dfs(i,k,ctn)
        print(result)
        if result != 0:
            total_num +=1
            house_num.append(result)

print(house_num)
house_num.sort()
print(total_num)
for i in house_num:
    print(i)

과정중에서 ctn 의 정의를 어떻게 해야하는 지 너무 헷갈린다....

import sys
N= int(sys.stdin.readline())

case = []
for i in range(N):
    case.append(list(sys.stdin.readline().rstrip()))
print(case)
if case[0][1] == '1':
    print(123124)

def dfs(x,y,ctn):
    if x <=-1 or x>= N or y<=-1 or y>=N :
        return ctn
    if case[x][y] == '1':
        case[x][y] ='0'
        ctn = dfs(x-1,y,ctn+1)
        ctn = dfs(x,y-1,ctn+1)
        ctn = dfs(x,y+1,ctn+1)
        ctn = dfs(x+1,y,ctn+1)
        return ctn
    return ctn

total_num = 0
result = 0
house_num = []
for i in range(N):
    for k in range(N):
        ctn =0
        result = dfs(i,k,ctn)
        print(result)
        if result != 0:
            total_num +=1
            house_num.append(result)

print(house_num)
house_num.sort()
print(total_num)
for i in house_num:
    print(i)
profile
Startup, FrontEnd, BlockChain Developer

0개의 댓글