본문 바로가기
작업/Problem Solving

백준 2941(크로아티아 알파벳) 파이썬(python) 해결

728x90

 

문제

 


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

 

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

 

 

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


dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다.


lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

 

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


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

 

출력

 

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

 

 

 

#백준 2941
text = input()
crotext = ('c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=')

for i in crotext:
    text = text.replace(i,"@")

print(len(text))

 

 

처음에 코드를 만들었을 때는 출력은 제대로 나오지만 런타임오류로 정답처리가 되지 않았어요.
출제자의 의도대로 코드가 완성되지 않았기 때문이겠죠...ㅜ
어떻게 더 좋은 코드를 만들 수 있는지 구글링을 해보았고,
매우 짧은 코드로 정확한 출력을 만드신 분의 코드로 파이썬의 흐름을 다시 배웠습니다.


crotext는 크로아티아 알파벳을 대신하는 문자를 저장한 튜플입니다.
값의 변경을 방지하고자 튜플로 만들었어요.



" for i in crotext "는 crotext 튜플의 내용을 순서대로 i에 대입합니다.
replace() 함수는 특정 문자열을 다른 문자열로 치환하는 역할을 합니다.


text.replace(i, "@")는 i에 해당하는 crotext의 문자열과 일치하는 것이 text에 존재한다면,
그 문자열을 @ 문자로 치환한다는 의미입니다.


그래서 ljes=njak를 입력했다고 가정한다면
@e@@ak로 문자열이 변경되며, 문자의 개수는 6이 됩니다.

 

-끝-

 

 

 

 

 

728x90