[Python/파이썬] 백준 알고리즘 2941번 / 크로아티아 알파벳

[Python/파이썬] 백준 알고리즘 2941번 / 크로아티아 알파벳

 

문제 링크: https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

 


 

최종 소스코드

1. 나의 풀이

voca = input()
cro = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
cnt = 0
for i in range(len(voca) - 1):
    for j in range(len(cro)):
        if voca[i:i + 2] == cro[j]:
            cnt += 1

for i in range(len(voca) - 2):
    for j in range(len(cro)):
        if voca[i:i + 3] == cro[j]:
            cnt += 1

print(len(voca) - cnt)

 

2. 개선된 풀이(출처:https://hongku.tistory.com/255)

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

for i in a:
    word = word.replace(i, '*')

print(len(word))

<풀이>

1. 나의 풀이

문자열에서 크로아티아 문자를 찾는다. 2글자 크로아티아 문자를 찾으면 길이에서 -1을 해준다. 3글자 크로아티아 문자를 찾으면 길이에서 -2를 해야 하지만 'dz='가 2글자 'z='와 겹쳐 두 번 빼지므로 -1을 해준다.

2. 개선된 풀이

크로아티아 문자를 한 글자로 치환한다. 대신 dz= 와 z=가 겹치므로 dz=가 우선 치환될 수 있게 리스트에서 앞에 있어야 한다. 이후 치환한 문자열의 길이를 출력한다.