alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 1013 Contact_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 1013 Contact_파이썬

알파이 2021. 3. 30. 08:56

 

1013 Contact    www.acmicpc.net/problem/1013

 

1013번: Contact

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤

www.acmicpc.net

 

 

 

 

문제 풀기 전 공부할 것 : 구현

 

 

 

 

 

 

 

풀이

<내용>

  • 구체적인 단계 풀이 내용이 필요하신 분이 계시다면 댓글 남겨주세요.

 

<코드>

def solve(idx, node , wave):
    if node == -1:
        print('NO')
        return
    
    if idx == len(wave) and (node == 5 or node == 6 or node == 7):
        print('YES')
        return
    
    if idx == len(wave):
        print('NO')
        return
    
    if node == 0:
        if wave[idx] == '0':
            solve(idx+1, 1, wave)
        else:
            solve(idx+1, 2, wave)
            
    elif node == 1:
        if wave[idx] == '0':
            solve(idx+1, -1, wave)
        else:
            solve(idx+1, 5, wave)
            
    elif node == 2:
        if wave[idx] == '0':
            solve(idx+1, 3, wave)
        else:
            solve(idx+1, -1, wave)
            
    elif node == 3:
        if wave[idx] == '0':
            solve(idx+1, 4, wave)
        else:
            solve(idx+1, -1, wave)
            
    elif node == 4:
        if wave[idx] == '0':
            solve(idx+1, 4, wave)
        else:
            solve(idx+1, 6, wave)
            
    elif node == 5:
        if wave[idx] == '0':
            solve(idx+1, 1, wave)
        else:
            solve(idx+1, 2, wave)
            
    elif node == 6:
        if wave[idx] == '0':
            solve(idx+1, 1, wave)
        else:
            solve(idx+1, 7, wave)
            
    elif node == 7:
        if wave[idx] == '0':
            solve(idx+1, 8, wave)
        else:
            solve(idx+1, 7, wave)
            
    elif node == 8:
        if wave[idx] == '0':
            solve(idx+1, 4, wave)
        else:
            solve(idx+1, 0, wave)            

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    solve(0, 0, input().rstrip())

 

 

 

 

 

 

 

 

반응형
Comments