백준

백준 2941 문제풀이 [python]

ys.k 2023. 6. 28. 03:17

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

알파벳 + 크로아티아 알파벳의 개수를 출력하면 되는 문제이다.

 

dz= 이 입력값으로 들어올 때, z= 과 이중으로 셈을 해서는 안된다는 걸 알아두자.

 

코드

a = input()


memory = ['a' for _ in range(102)]

for i in range(len(a)):
    memory[i] = a[i]

array = ['c=','c-','dz=','d-', 'lj', 'nj', 's=','z=']
count = 0
for i in range(len(a)):
    if memory[i]+memory[i+1]+memory[i+2] in array:
        count += 2
        memory[i],memory[i+1],memory[i+2]= 'a','a','a'
    elif memory[i]+memory[i+1] in array:
        count += 1


print(len(a)-count)

내 풀이다.

 

역시나 코드가 긴 게 마음에 들지 않아, 다른 사람의 코드를 보았고, 새로운 걸 배웠다.

 

코드

croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()

for i in croatia :
    word = word.replace(i, '*')  # input 변수와 동일한 이름의 변수
print(len(word))

출처 : https://ooyoung.tistory.com/74

 

백준 2941번 [파이썬] 크로아티아 알파벳 : replace 함수

[Python] 백준 알고리즘 온라인 저지 2941번 : 크로아티아 알파벳 크로아티아 알파벳 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= Python3 코드 croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for i in

ooyoung.tistory.com

정말 효율적이다.

 

나도 replace함수 알았으면 생각해 냈을 거다!

 

또한 이번 문제로 백준 가장 많이 풀린 100문제를 모두 풀어봤다.

 

기쁘다.

 

배운 점

1. str.replace(찾을 값, '대체 값') // 을 통해 찾을 값을 대체 값으로 바꿀 수 있다.