📖 문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경
| č | c= |
| ć | c- |
| dž | dz= |
| đ | d- |
| lj | lj |
| nj | nj |
| š | s= |
| ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
2941번: 크로아티아 알파벳 (acmicpc.net)
2941번: 크로아티아 알파벳
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=
www.acmicpc.net
💻 Python
cro = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
s = input()
count = 0
for c in cro:
if c in s:
while c in s:
s = s.replace(c, '0', 1)
count += 1
s = s.replace('0', '')
result = len(s) + count
print(result)
📚 풀이
처음에 각 문자가 몇 개 포함되어 있나 세기 위해 크로아티아 알파벳를 인덱스로 접근해서 입력받은 것에 포함된 수를 리스트에 저장하여 처리하는 방법으로 코드를 짰는데 틀렸다.
문제는 'dz='와 'z='!! 동일한 부분이 있어서 중복 계산된다.
그래서 replace를 사용했는데 처음에 아무 생각 없이 크로아티아 알파벳이 입력받은 문자에 있으면 replace하라고 했다가 같은 크로아티아 알파벳을 모조리 바꿔버리고 count는 한 번만 해줘서 또 틀려버렸다. 앞으로 replace 사용할 때는 뒤에 몇 번 바꿔줄지 지정하는 거 안 잊겠다...그럴거지...?
다른 분들 코드 보니까 엄청 간단하게 푼 것도 있던데 문제 풀고 찾아보는 재미가 쏠쏠하다.
'알고리즘 > 백준' 카테고리의 다른 글
| [백준] 10250. ACM 호텔 (0) | 2021.02.26 |
|---|---|
| [백준] 1316. 그룹 단어 체커 (0) | 2021.02.20 |
| [백준] 1065. 한수 (0) | 2021.02.12 |
| [백준] 4673. 셀프 넘버 (0) | 2021.02.12 |
| [백준] 4344. 평균은 넘겠지 (0) | 2021.02.02 |