목차
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, 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(’기존’, ‘대체’) 함수를 사용하면 기존의 문자를 대체 문자로 변경해줌.