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일 블로그 챌린지 중이었는데 어제 티스토리에 안들어와져서 하루 빼먹었다😥
아쉽지만 조금 짜릿했다네요
반응형