티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 2941번 : 크로아티아 알파벳

 

크로아티아 알파벳

č

c=

ć

c-

dz=

đ

d-

lj

lj

nj

nj

š

s=

ž

z=

 

Python3 코드

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

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

 

 

Python3 코드 풀이

 

1. 코드 풀이에 대한 전체적인 내용 정리

이 문제는 입력받는 문자열에서 크로아티아 알파벳의 개수를 출력하는 문제이다. 크로아티아 알파벳은 위 표에서의 알파벳 8개를 제외하고 모두 한글자이다. 표에서의 8개의 알파벳은 2글자~3글자로 이루어져 있다.

 

문제를 풀기 위해서 입력받는 문자에서 2글자~3글자로 이루어진 8개의 알파벳이 있는 경우 한 글자로 변환을 하고서 이후에 변환된 문자열의 총 글자 수를 세는 방법으로 코드를 작성했다.

 

문자를 변환하는 함수는 replace함수를 사용하였다. 이 함수를 for문 안에서 사용하며 주의했던 점은 문자를 변환하고서 저장하는 변수를 처음에 문자를 입력받을 때의 변수와 동일한 이름으로 지정한 것이다. replace함수는 함수를 사용한 문자열 원형을 변형시키지 않는 비파괴적 함수이기 때문이다. 이와 같은 사용 예시는 아래에서 설명한다.

 

위 코드에서 변형된 문자열의 개수만 출력하지 않고 for문 안에서 replace를 함수를 사용하면서 단어가 수정되어가는 과정을 출력해 보았다.

 

2. replace 함수로 수정된 문자를 입력받은 변수와 동일한 변수에 선언하는 경우

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

ljes=njak
ljes=njak
ljes=njak
ljes=njak
*es=njak
*es=*ak
*e**ak
*e**ak
6

croatia 표의 8개의 문자를 꺼내면서 replace 함수로 변환하였다. 동일한 문자가 없는 경우는 변환되지 않다가 동일한 문자가 있으면 * 기호로 변환되는 것을 볼 수 있다. 최종적으로 변환된 문자열의 개수가 6개여서 최종적으로 6을 출력하는 것을 볼 수 있다.

 

3. 다른 변수에 선언하는 경우

>>> for i in croatia :
>>>     word2 = word.replace(i, '*')  # input 변수와 다른 이름의 변수
>>>     print(word2)
>>> print(len(word2))

ljes=njak
ljes=njak
ljes=njak
ljes=njak
*es=njak
ljes=*ak
lje*njak
ljes=njak
9

다른 변수에 선언을 하여도 문자열 원형인 word 변수 자체를 변형시키지 않기 때문에 출력 값에서 문자열이 *로 변경됐다가 다시 돌아가는 것을 볼 수 있다.

 

replace 함수를 문자열 원형이 변형되도록 사용하려면 입력받은 변수와 동일한 이름으로 변수를 지정하여야 for문을 반복하는 동안 수정된 내용이 for문 끝날 때까지 유지될 수 있다.

 

반응형
댓글
반응형