티스토리 뷰
백준 2941번 크로아티아 알파벳
알고리즘 분류: 문자열
링크: https://www.acmicpc.net/problem/2941
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
문제 파악
입력값으로 주어지는 단어가 몇개의 알파벳으로 구성되어있는지를 묻는 문제이다.
위 표에 주어지는 크로아티아 알파벳의 개수를 세주고
나머지 남아있는 알파벳들은 그냥 한개의 알파벳으로 쳐서 개수를 세주면 된다.
코드
간단한 문제일것이라고 생각하고 도전했다가 실수를 많이 범했었다.
이래서 백준 문제는 채점하기 전에 예제 입출력을 꼼꼼히 확인해보아야 한다.
표에 주어져있는 크로아티아 알파벳을 croatia라는 리스트에 저장해두었다.
이제 입력으로 주어지는 단어에 크로아티아 알파벳의 개수를 for문을 통해 세는데
이때 주의해야 할점이 같은 크로아티아 알파벳이 여러개일 수도 있으니
word 안에 크로아티아 알파벳이 몇개들어있는지 세주고 그만큼 count에 더해준다.
중복되는 문자를 빼기위해 word에 크로아티아 알파벳을 공백으로 바꿔주는데
이 때 ""말고 " "로 바꿔주는 이유는 그냥 ""로 바꿔버리면 예제 입력 3에 나오는
nljj를 입력했을때 lj의 개수를 세고 lj를 ""로 바꿔서 nj를 또 하나의 크로아티아 알파벳으로 인식해서
n, lj, j로 인식되어야 할 것이 lj, nj로 인식되어버린다.
그렇기 때문에 번거롭더라도 " "로 공백을줘서 나중에 공백을 한꺼번에 없애는것이 중요하다.
for문 동안 크로아티아 알파벳의 개수를 다세고 for문이 종료되면
안에서 " "로 바꿔두었던 공백들을 전부 제거해주고 남아있는 알파벳의 개수 만큼
count에 더해주면 모든 알파벳의 개수를 다 셀수있게된다.
마지막으로 count를 출력해준다.
'Python 알고리즘' 카테고리의 다른 글
백준 10871번 파이썬 풀이: X보다 작은 수 (0) | 2020.09.01 |
---|---|
백준 1978번 파이썬 풀이: 소수 찾기 (0) | 2020.09.01 |
백준 5620번 파이썬 풀이: 가장 가까운 두 점의 거리 (0) | 2020.08.31 |
백준 3053번 파이썬 풀이: 택시 기하학 (2) | 2020.08.31 |
백준 1920번 파이썬 풀이: 수 찾기 (0) | 2020.08.30 |