1.N * N 크기의 단어 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램을 작성한다
1.처음에 나는 접근할때 가로 세로로 완전 탐색을 하려했다
2.완전 탐색을 하던 도중 배열의 끝 인덱스에 도달하는것은 생각을 못하고
0을 만나게 되는 경우 sum == k 이면 result 에 1을 더하고 아닌 경우에는 sum 을 0으로 초기화했는데 여기서 작은 오류가 발생하였다
3.결국 이 문제의 핵심은 가로 세로 완전 탐색을 하는데 조건이 중요하였다
-> 1. 배열 끝의 인덱스에 도달하거나 0을 만나면 sum에 있는 숫자를 확인한다
-> 2. sum이 k의 숫자와 일치하면 k를 갖는 단어가 들어갈 수 있다는 뜻이므로 result에 1을 추가한다
-> 3. sum이 k의 숫자와 일치하지 않으면 k의 숫자가 딱 들어가지 못하기 때문에 sum을 초기화 해준다
T = int(input())
for t in range(1,T+1):
n,k = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(n)]
result = 0
for i in range(n):
sum = 0
# 가로 방향으로
for j in range(n):
if arr[i][j] == 1:
sum += 1
if arr[i][j] == 0 or j == n-1:
if sum == k:
result += 1
sum = 0
# 세로 방향으로
for j in range(n):
if arr[j][i] == 1:
sum += 1
if arr[j][i] == 0 or j == n-1:
if sum == k:
result += 1
sum = 0
print(f'#{t} {result}')
i가 무조건 세로를 뜻하는게 아니라 arr[][] 에서 arr[i][] 가 들어가면 i가 세로를 나타내는거고 arr[j][i] 이면 j가 세로를 나타내는거다 무조건 i가 세로를 나타낸다는 선입견을 버리자