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

MEIN_FIGUR·2021년 8월 1일
0

SWEA_문제풀이

목록 보기
6/21
post-custom-banner

📌풀이


내가 쓴 풀이(성공)

def check_word_len(puzzle, n, k):
    result = 0
    
    #가로
    for line in puzzle:
        start, idx = 0, 0
        flag = 0
        
        while idx < n:
            # 0->1
            if line[idx] and not flag :
                start = idx
                flag = 1
            #1->0
            elif not line[idx] and flag :
                if idx - start == k :
                    result += 1
                flag = 0
            
            idx += 1
            
        if flag and idx - start == k:
            result += 1
            
    #세로
    for i in range(n):
        start, idx = 0, 0
        flag = 0
        
        while idx < n :
            #0->1
            if puzzle[idx][i] and not flag :
                start = idx
                flag = 1
            #1->0
            elif not puzzle[idx][i] and flag :
                if idx - start == k:
                    result += 1
                flag = 0
                
            idx += 1
            
        if flag and idx - start == k: 
            result += 1
            
    return result


T = int(input())

for test_case in range(1, T+1):
    n, k = map(int,input().split())
    word_puzzle = []
    for i in range(n):
        word_puzzle.append(list(map(int,input().split())))
    result = check_word_len(word_puzzle, n, k)
    
    print(f'#{test_case} {result}')
  • check_word_len 함수는 퍼즐에서 길이에 맞는 가로, 세로줄을 찾아서 개수를 리턴
    • flag는 0이면 0인 상태, 1이면 1인 상태를 표시
    • 0에서 1로 전환될 때, 시작 인덱스를 저장하고, 1에서 0으로 바뀔 때의 인덱스에서 빼서 길이를 구함
    • 맨 마지막이 1로 끝나는 경우, 마지막의 길이를 한번 더 측정



📌후기


조금 더 간결하게 코드를 구현하고 싶었는데, 쓰다보니 길어진 감이 있다ㅠ

profile
Growing Developer
post-custom-banner

0개의 댓글