[6/21] 2941 (크로아티아 알파벳)

이경준·2021년 6월 21일
0

코테

목록 보기
39/140
post-custom-banner

문제

내 코드

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))

로직

  1. 크로아티아 알파벳이 문자열에 존재할 때까지 while문을 돌린다.
  2. 알파벳이 있으면 num을 1씩 추가하고, 문자열에서 알파벳을 *로 바꿔준다.
    (알파벳을 삭제하면 문자열이 합쳐져서 다른 알파벳으로 인식할 수도 있다)
  3. 반복문이 끝나면 *을 지워준다.
  4. 문자열의 길이를 반환한다.

효율적인 코드

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))

피드백

  1. 알파벳 리스트를 만들어서 반복문을 돌리고, 문자열에 있는 알파벳을 띄어쓰기로 바꾼다. (위와 같은 문제점을 해결하기 위해서)
  2. 문자열의 길이를 출력한다. (띄어쓰기도 길이에 포함)
profile
The Show Must Go On
post-custom-banner

0개의 댓글