[BOF/Python] 2941번, 크로아티아 알파벳
📜 문제
🔥난이도🔥

1차 풀이 ❌
입력된 단어에서 몇 개의 크로아티아 알파벳으로 이루어져 있는지 찾는 문제다.
단어에서 2~3개의 알파벳으로 이루어진 크로아티아 알파벳을 카운트하고 제거하는 방식으로 접근했다.
-
2~3개의 알파벳으로 이루어진 크로아티아 알파벳 리스트 생성
-
입력된 단어에서 2~3개의 알파벳으로 이루어진 크로아티아 알파벳 수만큼 카운트하고 제거한다.
-
나머지 1개의 알파벳으로 이루어진 크로아티아 알파벳 수를 더한다.
코드
# 2~3개의 알파벳으로 이루어진 크로아티아 알파벳
c_alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
sum = 0 # 크로아티아 알파벳 수
# 크로아티아 알파벳 제거 및 카운트
for i in c_alpha:
# 크로아티아 알파벳만큼 카운트
sum += word.count(i)
# 해당 크로아티아 알파벳 제거
word = word.replace(i, '')
# 나머지 한 글자 알파벳 카운트
sum += len(word)
print(sum)
첫 번째 시도는 아래와 같은 예외 케이스 때문에 실패했다.
nljj 단어에서 lj를 제거하면 n과 j가 각각의 알파벳인데 nj가 되어 하나의 알파벳으로 카운트되기 때문이다.
결과

2차 풀이 ⭕
크로아티아 알파벳을 제거 후에 다른 문자로 치환을 하면 위에서 발생하는 예외 케이스를 제거할 수 있었다!
nljj 단어에서 lj를 다른 문자로 치환하면 n*j가 되어 n과 j를 각각의 알파벳으로 카운트할 수 있다.
또한 2~3개의 알파벳으로 이루어진 크로아티아 알파벳을 * 하나의 문자로 치환하므로 알파벳 수를 카운트하지 않아도 된다!
치환 완료된 단어의 길이가 크로아티아 알파벳의 수다.
코드
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
# 변경 알파벳 검사
for i in croatia:
# 변경 알파벳을 *로 치환 (하나의 문자로 변경됨)
word = word.replace(i, '*')
print(len(word))
결과

현재 티어 🥈
