[백준] 13022번: 늑대와 올바른 단어

lea_hwang·2022년 12월 7일
0

알고리즘

목록 보기
16/19

백준 13022번: 늑대와 올바른 단어

문제

다음은 늑대 나라에서 사용하는 올바른 단어에 대한 설명이다.
임의의 양의 정수 n에 대해서, 'w'가 n번 나오고, 그 다음에 'o'가 n번, 그 다음에 'l'이 n번, 그 다음에 'f'가 n번 나온 단어는 올바른 단어이다.
올바른 단어 두 개를 이은 단어도 올바른 단어이다.
1번과 2번 조건으로 만들 수 있는 단어만 올바른 단어이다.
다음은 올바른 단어의 예시이다.
1번 규칙으로 만든 "wolf", "wwoollff", "wwwooolllfff"는 모두 올바른 단어이다.
2번 규칙으로 만든 "wolfwwoollff"은 올바른 단어이다.
2번 규칙을 두 번 써서 만든 "wolfwwoollffwolf"은 올바른 단어이다.
"wfol"은 올바른 단어가 아니다. (순서가 올바르지 않음)
"wwolfolf"는 올바른 단어가 아니다. (문자열의 중간에 다른 문자열을 집어 넣음)
"wwwoolllfff"는 올바른 단어가 아니다. (o가 2번 들어갔다)

입력

첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다.

출력

입력으로 주어진 단어가 올바른 단어인 경우에는 1을, 아니면 0을 출력한다.

풀이방법

import sys
sys.stdin = open("input.txt")

word = input()

def check(word):
    while word:
        for i in range(1, 13):
            if len(word) < 4*i:
                return 0
            if word[0:4*i] == 'w' * i + 'o' * i + 'l' * i + 'f' * i:
                word = word[4*i:]
                break
        else:
            return 0
    return 1

print(check(word))

처음부터 'wolf', 'wwoollff' ... 단어들을 잘라가면서 진행. 만약 자를 수 없을 때 return 0.

profile
끊임없이 도전하는 개발자, 황희원입니다 :)

0개의 댓글