[Python/파이썬] 백준 알고리즘 2941번 / 크로아티아 알파벳
문제 링크: https://www.acmicpc.net/problem/2941
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
최종 소스코드
1. 나의 풀이
voca = input()
cro = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
cnt = 0
for i in range(len(voca) - 1):
for j in range(len(cro)):
if voca[i:i + 2] == cro[j]:
cnt += 1
for i in range(len(voca) - 2):
for j in range(len(cro)):
if voca[i:i + 3] == cro[j]:
cnt += 1
print(len(voca) - cnt)
2. 개선된 풀이(출처:https://hongku.tistory.com/255)
a = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
for i in a:
word = word.replace(i, '*')
print(len(word))
<풀이>
1. 나의 풀이
문자열에서 크로아티아 문자를 찾는다. 2글자 크로아티아 문자를 찾으면 길이에서 -1을 해준다. 3글자 크로아티아 문자를 찾으면 길이에서 -2를 해야 하지만 'dz='가 2글자 'z='와 겹쳐 두 번 빼지므로 -1을 해준다.
2. 개선된 풀이
크로아티아 문자를 한 글자로 치환한다. 대신 dz= 와 z=가 겹치므로 dz=가 우선 치환될 수 있게 리스트에서 앞에 있어야 한다. 이후 치환한 문자열의 길이를 출력한다.
'알고리즘, 자료구조 > 백준' 카테고리의 다른 글
[Python/파이썬] 백준 알고리즘 2775번 / 부녀회장이 될테야 (0) | 2022.11.01 |
---|---|
[Python/파이썬] 백준 알고리즘 2581번 / 소수 (0) | 2022.10.21 |
[Python/파이썬] 백준 알고리즘 1157번 / 단어 공부 (0) | 2022.10.20 |
[Python/파이썬] 백준 알고리즘 10809번 / 알파벳 찾기 (0) | 2022.10.10 |
[Python/파이썬] 백준 알고리즘 1065번 / 한수 (0) | 2022.10.08 |