본문 바로가기
코딩테스트/백준 알고리즘 풀이

[백준 알고리즘/python] 백준 2941번 크로아티아 알파벳, 파이썬

by Godgil 2020. 3. 19.

백준 알고리즘 2941번 크로아티아 알파벳, 파이썬

 

이번 문제는 백준 알고리즘의 2941번 크로아티아 알파벳 문제이다. 파이썬으로 풀어보았다.

 

크로아티아 알파벳 표가 주어지는데, 이를 이용해서 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 구현하는 문제.

 

나는 솔직히 이 문제 쪼끔 어려웠다. 생각하는 시간이 좀 늘어났고, 코드 짜는데도 오류가 많이 났었다.

 

먼저 문제의 조건이다.

# 조건 1. 첫째 줄에 최대 100글자의 단어가 주어진다.

# 조건 2. 단어는 크로아티아 알파벳으로 이루어져 있다.

# 조건 3. 표를 제외하고는 원래 알파벳과 동일하다.

 

이 문제에 대한 내 생각을 정리 해 봤다.

# 생각 1. 리스트에 크로아티아 알파벳을 추가한다.

# 생각 2. 반복문을 통해 문자열에서 크로아티아 문자를 찾으면 문자열에서 제외시켜버린다.

# 생각 3. 찾음과 동시에 count를 +1 한다.

 

이게 내 처음 생각이었다. 하지만 코드를 쓰다보니 생각이 좀 틀렸단걸 깨달았다.

 

제출한 내 코드이다.

 

alpha = ['c=','c-','dz=','d-','lj','nj','s=','z=']
string = input()
count = 0
for i in alpha:
   if i in string:
       string = string.replace(i," ")
print(len(string))

먼저 리스트에 넣는거 까진 동일하다.

하지만 이게 문자열에서 그냥 제외시켜버리니까. d(dz=)(z=) 처럼 예외가 발생했다.

 

d(dz=)(z=) 는 알파벳 수가 3이다. 

d는 그대로 처리되지만 dz=은 크로아티아 알파벳이고 제외를 했더니 z=이 남았다.

이제 여기서 그냥 제외를 해버리면 d와 z=가 합쳐져서 dz=를 형성해버리고, 

알파벳 수가 2로 출력이 됐다.

 

그래서 나는 .replace()를 통해 찾은 문자를 그냥 띄어쓰기로 변경해 버렸다.

그러고 난 후, 반복문을 다 돌리고, 띄어쓰기를 포함한 글자 수를 len을 통해 반환했다.

 

그러면 합쳐지는 문자 없이 깔끔하게 정답처리가 되었다.

 

문제출처

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

 

2941번: 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고,

www.acmicpc.net

 

댓글