SWEA(Python) 풀이/D2

SWEA[D2] (Python) 1979번 어디에 단어가 들어갈 수 있을까 풀이

개발윗미 2022. 4. 25. 12:59

Python으로 구현한 1979번 어디에 단어가 들어갈 수 있을까 문제 풀이입니다.

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PuPq6AaQDFAUq&categoryId=AV5PuPq6AaQDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=PYTHON&select-1=2&pageSize=10&pageIndex=1&&&&&&&&&& 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


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 값을 출력한다.