크로아티아 알파벳 변환
https://www.acmicpc.net/problem/2941
내가 작성한 코드
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[:2] in 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
|
a = ['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
'알고리즘' 카테고리의 다른 글
백준 - 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 |