알고리즘

백준 - 2941번 / replace()

joy_lee 2021. 8. 2. 21:30

크로아티아 알파벳 변환

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

내가 작성한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string = input()
cro_2 = ["c=""c-""d-""lj""nj""s=""z="]
cro_3 = "dz="
length = 0
while len(string) > 0:
    length += 1
    if string[:3== cro_3:
        string = string[3:]
        continue
    elif string[:2in cro_2:
        string = string[2:]
        continue
    else:
        string = string[1:]
        continue
print(length)
cs

내가 작성한 코드는 입력받은 string을 앞에서 하나씩 확인한다.

앞의 세 글자가 cro_3(dz=) 와 같으면 세 글자를 잘라내고, cro_3와 같지 않을 경우 cro_2에 속하는지 확인한다.

따로 확인하는 이유는 dz=와 z=가 뒤의 두 문자가 동일하기 때문에 z=로 먼저 확인되면 d만 남게되기 때문이다.

cro_2에 속하면 앞의 두 글자를 잘라내고 그 다음 문자를 확인하도록 하고, 크로아티아 알파벳이 아닌경우는 확인한 한 글자만 잘라냈다.

string을 끝까지 확인하면 빈 문자가 되서 while문을 나가게 되고, length를 출력한다.

 

그런데 이것보다 훨씬 간단한 방법이 있었다.

1
2
3
4
5
= ['dz=''c=''c-''z=''d-''lj''nj''s='
alpha = input() 
for t in a: 
    alpha = alpha.replace(t, '*'
print(len(alpha))
cs

입력받은 문자열에 replace를 사용한다.

z=보다 dz=를 먼저 확인할 수 있도록 a[0]에는 'dz='를 넣어주었다.

위의 문제에서는 크로아티아 알파벳으로 변환 후 몇 글자인지 세기만 하면 되기 때문에 알파벳에 포함되지 않는 '*'로 바꿔주고 문자열의 길이를 구하면 쉽게 끝난다.

 

string.replace("검색 문자", "치환 문자" [, 치환 횟수])

검색문자 : 변경하고 싶은 문자/문자열

치환문자 : 변경할 문자/문자열치환횟수 : 치환할 횟수(생략된경우 모든 검색문자 치환)

 

replace는 특정 문자를 바꿀 때만 사용하는걸로 생각하기 쉽지만 특정 문자열을 삭제할 때 더 많이 사용하는 것 같다.

string.replace(",", "")

위와 같이 ,를 없애는 경우에 더 많이 사용했다.

 

 

참고 페이지https://ponyozzang.tistory.com/334

 

Python 문자열 치환(replace) 사용 방법 및 예제

파이썬에서 문자열을 치환하는 방법을 알아보도록 하겠습니다. 문자열을 치환해주는 메서드로 replace가 있습니다. 대상 문자열에서 검색 문자를 지정하여 일치하는 문자가 있으면 원하는 문자

ponyozzang.tistory.com

 

'알고리즘' 카테고리의 다른 글

백준 - 2869번  (0) 2021.08.03
백준 - 1316번  (0) 2021.08.03
백준 - 5622번 / find(), index(), list comprehension  (0) 2021.08.02
백준 - 2908번 / python slicing  (0) 2021.08.02
백준 - 10809번 / 아스키코드, enumerate()  (0) 2021.07.28