문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다.
따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 | 변경 |
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다.
단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다.
lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다.
알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다.
문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
#백준 2941
text = input()
crotext = ('c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=')
for i in crotext:
text = text.replace(i,"@")
print(len(text))
처음에 코드를 만들었을 때는 출력은 제대로 나오지만 런타임오류로 정답처리가 되지 않았어요.
출제자의 의도대로 코드가 완성되지 않았기 때문이겠죠...ㅜ
어떻게 더 좋은 코드를 만들 수 있는지 구글링을 해보았고,
매우 짧은 코드로 정확한 출력을 만드신 분의 코드로 파이썬의 흐름을 다시 배웠습니다.
crotext는 크로아티아 알파벳을 대신하는 문자를 저장한 튜플입니다.
값의 변경을 방지하고자 튜플로 만들었어요.
" for i in crotext "는 crotext 튜플의 내용을 순서대로 i에 대입합니다.
replace() 함수는 특정 문자열을 다른 문자열로 치환하는 역할을 합니다.
text.replace(i, "@")는 i에 해당하는 crotext의 문자열과 일치하는 것이 text에 존재한다면,
그 문자열을 @ 문자로 치환한다는 의미입니다.
그래서 ljes=njak를 입력했다고 가정한다면
@e@@ak로 문자열이 변경되며, 문자의 개수는 6이 됩니다.
-끝-
'작업 > Problem Solving' 카테고리의 다른 글
백준 1712(손익분기점) 파이썬(python) 해결 (0) | 2020.08.18 |
---|---|
백준 1316(그룹 단어 체커) 파이썬(python) 해결 (0) | 2020.08.15 |
백준 1157(단어 공부) 파이썬(python) 해결 (0) | 2020.08.03 |
백준 2675(문자열 반복) 파이썬(python) 해결 (0) | 2020.07.27 |
백준 10809(알파벳 찾기) 파이썬(python) 해결 (0) | 2020.07.27 |