[2941] 크로아티아 알파벳

HeeSeong·2021년 6월 15일
0

백준

목록 보기
25/79
post-thumbnail

🔗 문제 링크

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글자의 단어가 주어진다.

  • 알파벳 소문자와 '-', '='로만 이루어져 있다.

  • 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.



💡 풀이 (언어 : Python)


조금 더 짧게 풀어보고 싶었는데 떠오르지 않았다. 3글자 짜리가 하나를 어떻게 할까했는데 그냥 따로 if문으로 한번 더 체크해줬다. 새로 알게된 사실은 문자열 인덱싱(string[1:5] 등)은 제한 범위를 벗어나도 에러가 안뜨고 그냥 없는것처럼 처리한다는 것이다. 그래서 [idx:idx+3] 부분에서 남은게 두글자여도 에러없이 통과하게 된다. 알게된 유용한 정보다.
밑에는 다른사람이 replace를 이용해서 훨씬 간결하게 작성한 코드이다.

내 풀이

alphabet = input()
croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
count = 0
idx = 0

while idx < len(alphabet):
    if idx == len(alphabet) - 1:
        count += 1
        break
    if alphabet[idx:idx+3] == "dz=":
        idx += 3
    elif alphabet[idx:idx+2] in croatia:
        idx += 2
    else:
        idx += 1
    count += 1

print(count)

배울만한 풀이

a = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
b = input()
for i in a:
    b = b.replace(i, 'a')
print(len(b))
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글