문제
내 코드
word = str(input())
num = 0
while ('c=' in word or 'c-' in word or 'dz=' in word or 'd-' in word or 'lj' in word or 'nj' in word or 's=' in word or 'z=' in word):
if 'c=' in word:
num += 1
word = word[:word.index('c=')] + '**' + word[word.index('c=')+2:]
elif 'c-' in word:
num += 1
word = word[:word.index('c-')] + '**' + word[word.index('c-')+2:]
elif 'dz=' in word:
num += 1
word = word[:word.index('dz=')] + '***' + word[word.index('dz=')+3:]
elif 'd-' in word:
num += 1
word = word[:word.index('d-')] + '**' + word[word.index('d-')+2:]
elif 'lj' in word:
num += 1
word = word[:word.index('lj')] + '**' + word[word.index('lj')+2:]
elif 'nj' in word:
num += 1
word = word[:word.index('nj')] + '**' + word[word.index('nj')+2:]
elif 's=' in word:
num += 1
word = word[:word.index('s=')] + '**' + word[word.index('s=')+2:]
elif 'z=' in word:
num += 1
word = word[:word.index('z=')] + '**' + word[word.index('z=')+2:]
word = [i for i in word if i != '*']
print(num + len(word))
로직
- 크로아티아 알파벳이 문자열에 존재할 때까지 while문을 돌린다.
- 알파벳이 있으면 num을 1씩 추가하고, 문자열에서 알파벳을 *로 바꿔준다.
(알파벳을 삭제하면 문자열이 합쳐져서 다른 알파벳으로 인식할 수도 있다)
- 반복문이 끝나면 *을 지워준다.
- 문자열의 길이를 반환한다.
효율적인 코드
alpha = ['c=','c-','dz=','d-','lj','nj','s=','z=']
string = input()
count = 0
for i in alpha:
if i in string:
string = string.replace(i," ")
print(string)
print(len(string))
피드백
- 알파벳 리스트를 만들어서 반복문을 돌리고, 문자열에 있는 알파벳을 띄어쓰기로 바꾼다. (위와 같은 문제점을 해결하기 위해서)
- 문자열의 길이를 출력한다. (띄어쓰기도 길이에 포함)