본문 바로가기
ALGORITHM/SW Expert Academy

[SWEA/Python] 1979. 어디에 단어가 들어갈 수 있을까

by 안녕나는현서 2021. 8. 13.
728x90

📌 문제

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

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

swexpertacademy.com

 

📌 문제 접근 방법

  1. 맨 처음에 문제를 이해를 못해서 헤맸다..!
    • 길이가 K인 단어가 들어갈 자리라고 해서 K보다 커도 단어가 들어갈 수 있을 거라고 생각했는데
    • 딱 K에 맞는 칸에만 단어가 들어갈 수 있었던 것!
  2. 만약 K가 3일 때, 11111이나 11101111와 같은 부분을 처리하느라 여러 번 틀렸다😥
    • 0을 만나면 초기화
    • 행 탐색(아래에서는 열 탐색)이 끝나면 cnt를 result리스트에 저장하는 방식으로 해결!

 

📌 코드

import sys

sys.stdin = open('input.txt')

T = int(input())

for t in range(1, T+1):
    N, K = map(int, input().split())
    puzzle = []

    for _ in range(N):
        puzzle.append(list(map(int, input().split())))

    result = []

    # 행 탐색
    for i in range(len(puzzle)):
        cnt = 0
        for j in range(len(puzzle[i])):
            # 1인 칸이면 cnt +1
            if puzzle[i][j]:
                cnt +=1
            # 0인 칸을 만나면 cnt를 result리스트에 넣고 0으로 초기화
            else:
                result.append(cnt)
                cnt = 0
        # 만약 행의 마지막 숫자가 1이라면 cnt가 저장되지 않으므로
        # 행 탐색이 끝난 후 cnt추가 (마지막 숫자가 0이라면 어차피 0)
        result.append(cnt)

    # 열 탐색
    for j in range(len(puzzle[0])):
        cnt = 0
        for i in range(len(puzzle)):
            if puzzle[i][j]:
                cnt += 1
            else:
                result.append(cnt)
                cnt = 0
        result.append(cnt)

    # result에서 K의 개수 세기
    ans = 0
    for num in result:
        if num == K:
            ans += 1

    print('#{} {}'.format(t, ans))

 

728x90

'ALGORITHM > SW Expert Academy' 카테고리의 다른 글

[SWEA/Python] 1221. GNS  (0) 2021.08.23
[SWEA/Python] 1210. Ladder1  (0) 2021.08.13
[SWEA/Python] 4837. 부분집합의 합  (0) 2021.08.13
[SWEA/Python] 4836. 색칠하기  (0) 2021.08.13
[SWEA/Python] 4835. 구간합  (0) 2021.08.13

댓글