감자튀김 공장🍟

[백준/2941] 크로아티아 알파벳 (with 파이썬) 본문

Algorithm/BOJ

[백준/2941] 크로아티아 알파벳 (with 파이썬)

Potato potage 2022. 10. 17. 19:34
반응형

✔ 문제


풀이

😥 틀린 코드

croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
s = input()
count = 0

for i in croatia:
    if s.find(i) != -1:
        count += 1
        s = s.replace(i, '')
count += len(s)
print(count)

find 함수를 써서 croatia 알파벳이 있다면 count 숫자를 +1 한 후 해당 알파벳을 ''으로 대체해서 없애버렸다.

그리고 남는 s의 길이를 구해 count에 더하는 방법으로 구현했다. 이렇게 했더니 예제는 다 맞게 나오는데 내가 모르는 예제에서 틀리는 것 같다. 

대충 감이 오는게 만약 'c=nd-jk' 이런 문자열이 온다면

1. c= 제거 후 'nd-jk'가 남는다 (count += 1)

2. d- 제거 후 'njk'가 남는다 (count +=1 )

⭕ 크로아티아 알파벳이 다 사라졌으므로 n, j, k의 len인 3이 더해져 count = 5를 출력해야 한다.

❌ 2번 과정 후 'njk'가 남게 되는데 이를 nj / k로 받아들여 count = 5가 아닌 4가 출력된다. 

 

👽 수정 코드

 

croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
s = input()

for i in croatia:
    s = s.replace(i, '*')

print(len(s))

replace 함수에서 ''로 대체하지 말고 'a'나 '*' 등의 문자로 대체해 대체된 s의 총 길이를 구하면 된다.

 


후기

수정 코드가 더 짧고 간단한데 왜 돌아갔는지... 

99일 블로그 챌린지 중이었는데 어제 티스토리에 안들어와져서 하루 빼먹었다😥

아쉽지만 조금 짜릿했다네요

 

 

 

 

 

 

반응형
Comments