문제풀이/SW Expert Academy

[SWEA][D2] 1979. 어디에 단어가 들어갈 수 있을까 (파이썬/Python)

얄루몬 2021. 9. 1. 18:22

t = int(input())


for tc in range(1,t+1):
    n, k = map(int,input().split())

    #리스트 내포 방식 활용 입력
    puzzle = [list(map(int, input().split())) for _ in range(n)]

    result = 0
    
    for i in range(n):
        cnt = 0
        # 가로 검사
        for j in range(n):
            if puzzle[i][j] == 1:
                cnt += 1
            #벽을 만났을 때 그동안 쌓은 값이 k라면 단어가 들어갈 수 있는 조건 이기에 한 번더 살펴본다.
            if puzzle[i][j] == 0 or j == n-1:
                if cnt == k:
                    result += 1
                cnt = 0 #cnt를 초기화해주어야 함.
                
        for j in range(n):
            if puzzle[j][i] == 1:
                cnt += 1
            if puzzle[j][i] == 0 or j == n-1:
                if cnt == k:
                    result += 1
                cnt = 0
    print(f'#{tc} {result}')

# 가로(행) 세로(열)만 제대로 살펴보면 어렵지 않은 문제

 

 

# 벽을 만났을 때 그동안 쌓은 값이 k길이 만큼일 수 있기에 그 부분을 신경써서 살펴보면 됨.

 

 

# 벽을 만날 조건은 0을 만난 경우와 행이나 열의 끝부분에 닿았을 때. 즉 n-1일때 다음열 다음행으로 넘어가기 때문.

 

 

# cnt초기화는 당연히 해주어야 한다