알고리즘 도전기 - 19

김치전사·2022년 6월 27일
0

알고리즘 도전기

목록 보기
19/89

2941 크로아티아 알파벳

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

예제 입력

ljes=njak

예제 출력

6

코드

input_str = input()
croatia_list = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']


def confirm_croatia(string, n, count):
    if string[n] == 'c':
        if n == len(string) - 1:
            print(count + 1)
        elif n < len(string) - 1 and (string[n + 1] == '=' or string[n + 1] == '-'):
            if n + 2 < len(string):
                confirm_croatia(string, n + 2, count + 1)
            else:
                print(count + 1)
        else:
            confirm_croatia(string, n + 1, count + 1)
    elif string[n] == 'd':
        if n == len(string) - 1:
            print(count + 1)
        elif n < len(string) - 1 and string[n + 1] == '-':
            if n + 2 < len(string):
                confirm_croatia(string, n + 2, count + 1)
            else:
                print(count + 1)
        elif n < len(string) - 2 and string[n + 1] == 'z' and string[n + 2] == '=':
            if n + 3 < len(string):
                confirm_croatia(string, n + 3, count + 1)
            else:
                print(count + 1)
        else:
            confirm_croatia(string, n + 1, count + 1)
    elif string[n] == 'l' or string[n] == 'n':
        if n == len(string) - 1:
            print(count + 1)
        elif n < len(string) - 1 and string[n + 1] == 'j':
            if n + 2 < len(string):
                confirm_croatia(string, n + 2, count + 1)
            else:
                print(count + 1)
        else:
            confirm_croatia(string, n + 1, count + 1)
    elif string[n] == 's' or string[n] == 'z':
        if n == len(string) - 1:
            print(count + 1)
        elif n < len(string) - 1 and string[n + 1] == '=':
            if n + 2 < len(string):
                confirm_croatia(string, n + 2, count + 1)
            else:
                print(count + 1)
        else:
            confirm_croatia(string, n + 1, count + 1)
    else:
        if n != len(string) - 1:
            confirm_croatia(string, n + 1, count + 1)
        else:
            print(count + 1)


confirm_croatia(input_str, 0, 0)
profile
개인공부 블로그입니다. 상업적 용도 X

0개의 댓글