📖 문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳변경

č c=
ć c-
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

+ Recent posts