백준 알고리즘 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
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 1712번 손익분기점, 파이썬 (1) | 2020.03.21 |
---|---|
[백준 알고리즘/python] 백준 1316번 그룹 단어 체커, 파이썬 (0) | 2020.03.20 |
[백준 알고리즘/python] 백준 5622번 다이얼, 파이썬 (0) | 2020.03.19 |
[백준 알고리즘/python] 백준 2908번 상수, 파이썬 (0) | 2020.03.19 |
[백준 알고리즘/python] 백준 1152번 단어의 개수, 파이썬 (0) | 2020.03.19 |
댓글