Python으로 구현한 1979번 어디에 단어가 들어갈 수 있을까 문제 풀이입니다.
t = int(input())
for tc in range(1, t + 1) :
n, k = map(int, input().split())
data = [list(map(int, input().split())) for _ in range(n)]
result = 0
# 가로 확인
for i in range(n) :
cnt = 0
for j in range(n) :
if data[i][j] == 1 :
cnt += 1
if data[i][j] == 0 or j == n -1 :
if cnt == k :
result += 1
if data[i][j] == 0 :
cnt = 0
# 세로 확인
for i in range(n) :
cnt = 0
for j in range(n) :
if data[j][i] == 1 :
cnt += 1
if data[j][i] == 0 or j == n - 1 :
if cnt == k :
result += 1
if data[j][i] == 0 :
cnt = 0
print('#%d %d' % (tc, result))
1. 각 테스트 케이스마다 n과 k를 입력받고, 퍼즐의 상태를 입력받아 data 리스트를 정의한다.
2. result를 0으로 초기화 한 뒤, 가장 먼저 가로의 상황을 확인한다. 해당 작업 과정은 아래와 같다.
- 2중 for문을 통해 data 리스트 요소를 하나씩 확인하며, 해당 값이 1일 경우 cnt를 1 증가 시킨다.
- 만약 현재의 값이 0이거나 마지막 열일 경우 cnt 값을 확인하고 cnt 값이 k와 같을 경우 result를 1 증가 시킨다.
- 이후 현재의 값이 0일 경우 cnt를 다시 0으로 초기화한다.
3. 가로의 상황을 확인한 뒤 세로의 상황을 확인한다. 해당 작업 과정은 아래와 같다.
- 2중 for문을 통해 data 리스트 요소를 하나씩 확인하며, 해당 값이 1일 경우 cnt를 1 증가 시킨다.
- 만약 현재의 값이 0이거나 마지막 행일 경우 cnt 값을 확인하고 cnt 값이 k와 같을 경우 result를 1 증가 시킨다.
- 이후 현재의 값이 0일 경우 cnt를 다시 0으로 초기화한다.
4. 최종적으로 해당 테스트 케이스 번호와 함께 result 값을 출력한다.
'SWEA(Python) 풀이 > D2' 카테고리의 다른 글
SWEA[D2] (Python) 1984번 중간 평균값 구하기 풀이 (0) | 2022.04.26 |
---|---|
SWEA[D2] (Python) 1983번 조교의 성적 매기기 풀이 (0) | 2022.04.25 |
SWEA[D2] (Python) 1976번 시각 덧셈 풀이 (0) | 2022.04.23 |
SWEA[D2] (Python) 1974번 스도쿠 검증 풀이 (0) | 2022.04.23 |
SWEA[D2] (Python) 1970번 쉬운 거스름돈 풀이 (0) | 2022.04.21 |