본문 바로가기

알고리즘 문제풀이 (파이썬)/BOJ (Baekjoon Online Judge)

특정 조건 안에서 문자열 개수 세기 [BOJ 2941] 크로아티아 알파벳 (파이썬 python)

파이썬 python 크로아티아 알파벳 [BOJ 2941]

BOJ 2941번: 크로아티아 알파벳

 

2941번: 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고,

www.acmicpc.net

문자열 개수를 셀 때 고려해야하는 조건을 조건문으로 작성했습니다.

전체 코드

word = input()
croatian = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
subcount = 0
for alphabet in croatian:
    if alphabet in word:
        if alphabet == 'dz=':
            subcount -= 2 * word.count(alphabet)
        elif alphabet == 'z=':
            subcount -= word.count(alphabet)
            if 'dz=' in word:
                subcount += word.count('dz=')
        else:
            subcount -= word.count(alphabet)

count = len(word) + subcount
print(count)

 

​ 기본적으로 문자열 내부의 글자 개수를 셀 때 len함수를 사용했습니다.
크로아티아 알파벳은 여러 글자가 한 글자처럼 취급되는 경우이므로, 그 경우들을 리스트에 담아 해당 경우들이 나타날 때 만큼 전체 글자 수에서 뺐습니다.

 

​ 이때 'dz='인 경우와 'z='인 경우 서로 문자열이 겹치기 때문에, 중복해서 빼지 않도록 주의합니다.