관리 메뉴

100세까지 코딩

[백준] 2941번 크로아티아 알파벳 본문

코딩테스트/파이썬

[백준] 2941번 크로아티아 알파벳

100세까지 코딩 2024. 1. 10. 17:57
 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

문제

나의 생각
  • list에 미리 알파벳들을 저장해 놓는다.
  • list를 순회하면서 만약 문자열에 해당 알파벳이 있으면 count()를 해서 cnt에 더해준다.
  • 해당 알파벳은 replace()를 사용하여 다른 문자로 치환시킨다.
  • 공백으로 치환 시 nljj의 경우 lj를 치환하면 nj가 남아 nj로 치환되어 2개가 된다. # 답은 3개
  • 총개수는 cnt + 남아있는 문자열 길이 - 치환시킨 문자 길이
나의 풀이
s = input()  # nljj
word_list = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
cnt = 0

for i in word_list:
    if i in s:
        cnt += s.count(i) # 1
        s = s.replace(i, "*") # "n*j"

cnt += (len(s) - s.count("*")) # 1 + 3 - 1
print(cnt) # 3
참고
s = input()
word_list = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
cnt = 0

for i in word_list:
    if i in s:
        cnt += s.count(i)
        s = s.replace(i, " ")
s = s.replace(" ", "")
print(cnt + len(s))

- * 가 크로아티아 문자에 추가 될수도 있어 공백으로 치환하고 싶을 때