백준-2941 크로아티아 알파벳

문자열 문제인데 유용한 함수들을 많이 알게되서 기억하려고 메모한다.

  1. find함수
    findIndex = array.find('ㅋㅋ')
    -> 'ㅋㅋ'가 있는 가장 첫번째 index를 반환한다.
    없으면 -1반환

  2. replace함수로 문자열 내에서 특정 문자열 삭제하기

a = '아름다운 대한민국'
a = a.replace('다운', '', 1)

print(a)
//아름 대한민국

replace함수의 첫번째 인자는 변경할 타겟 문자열이고 두번째 문자열은 변경할 문자열이다. ""를 이용해서 삭제를 시킴! 추가로 세번째 인자는 변경할 횟수이다.
이는 동일한 타겟 문자열이 여러개일 경우 유용하다.

a = '아름다운 대한민국다운 민국이'
a = a.replace('다운', '', 1)

print(a)
//아름 대한민국다운 민국이
a = '아름다운 대한민국다운 민국이'
a = a.replace('다운', '', 2)

print(a)
//아름 대한민국 민국이

이 두 함수를 이용해서 풀었다.

해결 코드 😀

import sys

arr = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

n = sys.stdin.readline().rstrip()

removeCount = 0

for i in range(len(arr)):
  findIndex = n.find(arr[i])
  while findIndex != -1:
      n = n.replace(n[findIndex : findIndex + len(arr[i])], "A", 1)
      removeCount += 1
      findIndex = n.find(arr[i])

for i in range(len(n)):
  if n[i] != 'A':
    removeCount += 1
print(removeCount)

시행착오들 🤣

  • a in b 문법으로 찾으려했으나 여러개의 타겟 문자열이 문자열내에 존재하는경우 핸들링이 안됨
  • array slice를 이용할때 [0:3] -> index가 0부터 2까지 slice하는것이다.(3까지 slicing하는걸로 착각해서 많은 오류를..
  • replace로 타겟 문자열을 삭제할때 예상치 못한 오류가 나왔었음. ex) ddz=z=에서 먼저 dz=부터 삭제하면 남은 문자열은 dz=인데 이것도 dz=이므로 제대로 removeCount가 세어지지않았당.. 특정한 문자로 치환해서 해결함. 대문자는 입력값에 없으므로 난 'A'로 치환해서 문제해결

좋은 웹페이지 즐겨찾기