백준2941번 (크로아티아 알파벳)

2025. 2. 3. 18:32백준

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

크로아티아 알파벳 변경
č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

나의 풀이

import sys
n = sys.stdin.readline().strip()
kroatia=['c=',
'c-',
'dz=',
'd-',
'lj',
'nj',
's=',
'z=']
for i in kroatia :
    if i in n:
        n = n.replace(i,"0")
cnt =n.count("0")
n=n.replace("0","")
print(len(n) +cnt)
  1. 묶여 있는 알파벳은 정해져 있으니 그걸 기준으로 조작
  2. replace()를 이용해서 문자열 안에 해당 문자가 있으면 없애자
    a. 이때 "0"이나 다른 문자가 아닌 아에 ""으로 없애면 문자 lljj와 같은 문자열은 가운데가 사라지면 새로운 lj가 생김
  3. 0의 개수와 0을 제외한 나머지 문자의 개수를 세면 묶인 문자와 아닌 문자의 개수의 총 합을 알 수 있다.

 

다른사람의 풀이

cro = ["c=",'c-',"dz=","d-","lj","nj","s=","z="]

a = input()

for i in cro:
    a = a.replace(i,"*")
print(len(a))

나는 틀림없이 바보가 맞다.
묶인걸 하나로 취급하면 그냥 그걸 포함해서 문자열에서 문자의 개수를 세면 되는건데...

반응형

'백준' 카테고리의 다른 글

백준 1316번 (그룹 단어 체커2)  (0) 2025.02.07
백준 1316번 (그룹 단어 체커1)  (0) 2025.02.04
백준 1157번(단어 공부 完)  (0) 2025.01.24
백준 1157번(단어 공부 1)  (0) 2025.01.23
백준 10988번  (0) 2025.01.23