파이썬(Python)/백준(Baekjoon) 문제 풀이

[백준, python 파이썬] 2941번 : 크로아티아 알파벳(문자열)

sunning 2022. 3. 27. 15:29
728x90
반응형

백준 2941번 문제 풀기

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

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net


문제 설명

문제

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

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

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

 

입력

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

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

출력

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

 

예제 입력 1
예제 출력 1
ljes=njak
6
예제 입력 2
예제 출력 2
ddz=z=
3
예제 입력 3
예제 출력 3
nljj
3
예제 입력 4
예제 출력 4
c=c=
2
예제 입력5
예체 출력5
dz=ak
3

알고리즘 및 설명 

점점 난이도가 올라갈수록 나의 한계에 부딪히는 거 같지만 좌절할 필요 없이 하나씩 해나가면 될 것이다.

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

S = str(input())
for j in ALPHA:
    if j in S:
        S = S.replace(j, '*')
        
print(len(S))

먼저 처음 떠올린 생각은 ALPHA에 있는 요소가 S에 들어있으면 S에서 그 요소를 제거하고 그 횟수를 세고, 나머지 남아있는 알파벳 수를 더하면 될 것이라고 생각했다.

strip이란 함수를 사용하여 문자열의 특정 문자를 제거하려고 시도하였는데 그렇게 하다보니 그 안에 몇 개의 요소가 삭제되었는지는 확인할 수가 없었다. 그래서 검색을 통해 알아낸 가장 쉬운 방법은 위의 코드와 같다.

 

내가 생각한 것과 동일하게 ALPHA라는 크로아티아 알파벳 리스트를 만들어서 입력받은 문자열에 크로아티아 알파벳 리스트의 요소가 포함되어있으면 그것을 *로 대체하는 것이다. 이렇게하면 크로아티아 알파벳을 하나의 문자 *로 치환하여 1개로 카운트할 수 있다. 그래서 *로 치환 후 문자 개수를 세면 몇 개의 크로아티아 알파벳으로 이루어져있는지 확인할 수 있다.

728x90
반응형