본문 바로가기

# Coding/# 백준

[백준 / 1013] Contact - Python

728x90
반응형

https://www.acmicpc.net/problem/1013

 

1013번: Contact

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

www.acmicpc.net

 

<풀이>

반례

101 -> NO

1000000000000000 -> NO

100000000000001111111111111 -> YES

100111001 -> YES

 

<전체 코드>

def algo(num):
    fail = False
    l = len(num)
    i = 0
    first = False
    last = True
    while i < l:
        if first:
            if num[i] == '0':
                pass
            elif num[i] == '1':
                first = False

        else:
            if num[i] == '0':
                if i+1 == l:
                    fail = True
                    break
                if num[i+1] == '0':
                    fail = True
                    break
                else:
                    i = i+1
                    last = True
            else:
                if last:
                    if i+1 == l:
                        fail = True
                        break
                    if num[i+1] == '1':
                        fail = True
                        break
                    else:
                        if i+2 == l:
                            fail = True
                            break
                        if num[i+2] == '0':
                            last = False
                            first = True
                        else:
                            fail = True
                            break
                else:
                    if i != 0:
                        if num[i-1] == '1':
                            if i+1 != l and num[i+1] == '0':
                                first = True
                    else:
                        fail = True
                        break
        i = i+1
    if first:
        fail = True
    if fail:
        return "NO"
    else:
        return "YES"


n = int(input())

for i in range(n):
    print(algo(input()))
728x90
반응형