/////
Search
Duplicate

크로아티아 알파벳 (백준 2941)

태그
문자열 검색
체크 필요
목차

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

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

출력

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

예제

예제 1

입력

ljes=njak
Plain Text
복사

출력

6
Plain Text
복사

예제 2

입력

ddz=z=
Plain Text
복사

출력

3
Plain Text
복사

예제 3

입력

nljj
Plain Text
복사

출력

3
Plain Text
복사

예제 4

입력

c=c=
Plain Text
복사

출력

2
Plain Text
복사

예제 5

입력

dz=ak
Plain Text
복사

출력

3
Plain Text
복사

풀이1

word = input() def croatia_count(word): word_list = [] while len(word) > 0: # 문자가 남아있을 때까지 반복 post = word[-1] # 뒤에서부터 검색 if post == '-': #'-'인 경우 무조건 'c-' 또는 'd-' word_list.append(word[-2:]) word = word[:-2] elif post == '=': #'='인 경우 뒤에서 두 번째 값도 살펴야 함. second_post = word[-2] if second_post in ['c','s']: # 뒤에서 두 번째 값이 'c'나 's'인 경우 word_list.append(word[-2:]) word = word[:-2] else: # 뒤에서 두 번째 값이 'z'인 경우 try: third_post = word[-3] # 뒤에서 세 번째 값도 살펴야 함. if third_post == 'd': # 'dz='인 경우 word_list.append(word[-3:]) word = word[:-3] else: # 그냥 'z='인 경우 word_list.append(word[-2:]) word = word[:-2] except IndexError: # 뒤에서 세 번째 값이 존재하지 않는 경우 'z='임 word_list.append(word[-2:]) word = word[:-2] elif post == 'j': try: second_post = word[-2] if second_post in ['l','n']: # 'lj', 'nj'인 경우 word_list.append(word[-2:]) word = word[:-2] else: # 그냥 'j'인 경우 word_list.append('j') word = word[:-1] except IndexError: # 뒤에서 두 번째 값이 존재하지 않는 경우엔 그냥 'j'임 word_list.append('j') word = word[:-1] else: # 평범한 알파벳인 경우 word_list.append(post) word = word[:-1] return len(word_list) print(croatia_count(word))
Python
복사

풀이2 (Much Simpler)

txt = input() cr_list = tuple(['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']) # 다 정의해줬다. cnt = 0 # 크로아티아 알파벳 개수 for cr in cr_list: if cr in txt: cnt += txt.count(cr) # 크로아티아 문자가 txt에 있는 경우 count 해줌. txt = txt.replace(cr, ' ') # 크로아티아 문자의 위치를 ' '로 대체해줌. # 대체해주지 않으면 다른 문자들이 합쳐져서 크로아티아 문자로 인식될 수 있음. else: continue print( cnt + len((txt.replace(' ', '')))) # 크로아티아 알파벳 개수+그냥 알파벳 개수
Python
복사

기억할 점

string에 .count(’문자’) 함수를 사용하면 해당 문자가 string에 몇 개나 포함되어 있는지를 세어준다.
string에 .replace(’기존’, ‘대체’) 함수를 사용하면 기존의 문자를 대체 문자로 변경해줌.