문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 | 변경 |
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
예제
나의 풀이
word = input()
alpha_list = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
cnt = 0
for i in alpha_list:
split_list = word.split(i)
if len(split_list) > 1:
cnt += len(split_list) - 1
word = ''.join(split_list)
if word == '':
break
if word != '':
cnt += len(word)
print(cnt)
- `word`를 크로아티아 알파벳으로 `split()`한다.
- `split_list`의 길이가 `1` 이상이라면 즉, 문자에 크로아티아 알파벳이 포함되어 있었다면 그 수만큼 `cnt`에 더해준다.
- 카운트한 알파벳을 제외한 새로운 `''.join(split_list)`를 `word`에 할당한다.
- 만약 카운트할 단어가 남아있지 않다면 for문을 종료한다.
- if문에서 크로아티아 알파벳을 제외한 알파벳이 남았다면 그 `word`의 길이만큼 `cnt`에 더한다.
- 테스트 결과 이 풀이는 틀렸다. 예제 3번에서 `nljj`를 입력하면 중간에 `lj`가 삭제되고 남은 글자가 `nj`로 합쳐지면서 `nj`를 또다른 크로아티아 알파벳으로 인식해서 `2`를 출력한다.
다른 사람의 풀이
word = input()
alpha_list = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
for i in alpha_list:
word = word.replace(i, '*')
print(len(word))
- `replace`를 이용해서 크로아티아 알파벳이 있을 경우 알파벳에 사용되지 않는 글자인 `*`로 바꾼다.
- 최종적으로 `word`의 길이를 출력한다.