예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
[ 입력 ]
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
[ 출력 ]
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
굉장한 시행착오를 겪었지만, 그 결과 문제를 풀 때의 핵심을 알게 되었다.
크로아티아 알파벳 확인 후 치환할 때, 공백이 아닌 특정 문자(예시: !)로 치환해주어야 한다.
공백으로 치환할 경우 크로아티아 알파벳 자리가 없어지면서 자연스럽게 겹치게 되는데, (예시: ldz=j 에서 dz= 를 공백으로 치환 → lj가 남음) 예시처럼 l과 j 사이에 있는 크로아티아 알파벳이 사라지고 겹치게 되면서, 겹친 문자열이 새로운 크로아티아 알파벳으로 처리될 가능성이 있으므로, 특정 문자로 치환해 주어야 이를 방지함과 동시에 치환된 크로아티아 알파벳은 자연스럽게 길이가 1로 공통된다.
위의 점만 유의하면 생각보다 간단한 문제이다.
알고리즘:
word(단어)를 입력받는다.
모든 크로아티아 알파벳의 정보가 담긴 arr 리스트를 만든다.
크로아티아 알파벳의 개수만큼 반복하는 반복문을 만든다.
replace() 함수를 사용하여, word 에서 모든 크로아티아 알파벳을 특정 문자(!) 로 치환하여 그대로 word에 초기화한다. (replace() 함수를 사용하는 것만으로는 값이 바뀌지 않는다.)
위 과정에서 자연스럽게 모든 크로아티아 알파벳은 길이가 1로 공통된다.
크로아티아 알파벳의 치환이 완료된 word의 길이를 출력한다.
코드:
word = input()
arr = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
for i in range(len(arr)):
word = word.replace(arr[i], '!')
print(len(word))