2941번: 크로아티아 알파벳 (acmicpc.net)
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
풀이
a = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
b = input()
for i in a:
b = b.replace(i, 'a')
print(len(b))
-리스트에 크로아티아 문자를 미리 입력받고 for문 돌려서 replace함수로 크로아티아 지정 문자를 찾으면 그 문자를 'a'로 바꿔준 후 입력한 b의 길이를 찾아주면 된다.
사용된 개념
리스트
odd=[1,3,5,7,9]
*궁금증1: 리스트랑 C 배열이랑 뭐가 다르지?
리스트는 동적 할당, 배열은 정적 할당!
일반적으로 파이썬에서는 array를 지원하지 않고 이를 쓰기 위해 NumPy를 사용하는 것 같다.
[NumPy] 넘파이란? List와 Array의 차이점, 넘파이 계산이 빠른이유 (tistory.com)
replace 함수
파이썬 replace( ) 문자열을 변경하는 함수 (Python) (tistory.com)
복기
replace함수를 찾아봤지만 그래서 뭐? 라는 생각이 들었다. replace가 특정 지정 문자를 다른 글자로 바꿀 수 있고 횟수도 지정할 수 있다는 걸 알았는데 그래도 이 문제에 어떻게 적용해야할지 감이 안왔다. 나는 다른 글자로 바꾸는 기능을 원하는게 아니라 해당 글자를 찾아서 카운팅하는 걸 원해!에 꽂혔는데 그럼 카운팅은 어떻게 할건데?라는 어려움에 부딪혔다. 그래서 빠르게 답안을 봤는데 특정 문자로 바꿔준 뒤 전체 카운팅 할 어떻게 보면 단순한 생각을 하지 못했다..
'Algorithm > Python' 카테고리의 다른 글
백준 - 2805 - 나무 자르기 - Python/이분탐색 (0) | 2021.03.09 |
---|---|
백준 - 11651 - 좌표 정렬하기 2 - Python/sorted (0) | 2021.03.09 |
백준 - 4673 - 셀프 넘버 - Python/sort, list, for문 활용 (0) | 2021.03.08 |
백준 - 1929 - 소수 구하기 - Python (0) | 2021.03.08 |
백준 - 1157- 단어공부 - Python / set, count 함수 (0) | 2021.03.08 |
댓글