본문 바로가기
Algorithm

[Algorithm] 백준 Python 2941 - 크로아티아 알파벳

by SnoopyCoffee 2022. 9. 15.
반응형

Link : https://www.acmicpc.net/problem/2941

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

크로아티아 알파벳변경
č 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
 

 

코드

#크로아티아 알파벳
alpha = ["c=", "c-","dz=","d-","lj","nj","s=","z="]
result = []
n = input()
i = 0

#1 
while i < len(n):
    if n[i:i+2] in alpha:
        result.append(n[i:i+2])
        i = i + 2
    elif n[i:i+3] in alpha:
        result.append(n[i:i+3])
        i = i + 3
    else:
        result.append(n[i])
        i = i + 1
print(len(result))

#2 
for i in alpha:
    n = n.replace(i,'*')
print(len(n))

풀이

#1

1. 입력된 문자를 2개씩 혹은 3개씩 끊어서 alpha에 있는 단어와 비교 있으면 result 리스트에 저장

2. 이전에 끊어서 저장한 단어 길이만큼 i를 증가

3. result의 길이로 출력

 

#2

1. replace() 함수를 이용하여 입력된 문자열에서 alpha에 있는 단어와 같은 문자를 *로 치환

ex: ljes=njak -> *e**ak ->

2. 치환된 문자의 길이로 출력

 

 
 
반응형