백준 2941_크로아티아 알파벳 / Python

2024. 1. 14. 19:23백준

문제

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

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

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

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

입력

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

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

출력

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

예제 입력 1

ljes=njak

예제 출력 1

6

예제 입력 2

ddz=z=

예제 출력 2

3

예제 입력 3

nljj

예제 출력 3

3

예제 입력 4

c=c=

예제 출력 4

2

예제 입력 5

dz=ak

예제 출력 5

3

## 2941 크로아티아 알파벳
word=input()
word_lst=['c=','c-','dz=','d-','lj','nj','s=','z=']
cnt=0
for alpha in word_lst:
  cnt+=word.count(alpha)
  word=word.replace(alpha," ")
  #print(cnt,alpha,word)

print(cnt+len(word.replace(" ","")))

처음엔 알파벳을 찾고 해당 알파벳을 그냥 ""로 replace 해주었는데 이러면 예제3번 같은 경우가 틀리게 된다.

"nljj"에서 nl을 ""로 대체해버리면 nj가 붙어버려 "nj"가 하나의 알파벳으로 처리되기 때문.

그래서 두글자 이상 알파벳을 찾을때는 " "로 대체해주고 다 찾은 다음 한자리짜리 알파벳을 셀 때 띄어쓰기를 제거해주었다.

 

알고리즘 스터디 피드백 1/16

## 2941 크로아티아 알파벳
word=input()
word_lst=['c=','c-','dz=','d-','lj','nj','s=','z=']
#cnt=0
for alpha in word_lst:
  #cnt+=word.count(alpha)
  word=word.replace(alpha," ")
  #print(cnt,alpha,word)

print(len(word))

cnt는 필요없는 변수였다! " "를 다시 ""로 바꿀 필요도 없었다!!!