코딩공부/알고리즘

[파이썬 풀이] 백준 2941.크로아티아 알파벳

잉옐잉 2021. 12. 5. 04:22

문제   

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳변경

č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

 

입력   

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

 

출력   

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

코드   

a=input()
calist=["c=","c-","dz=","d-","lj","nj","s=","z="]
for i in calist:
    if i in a:
        a=a.replace(i,"1")
print(len(a))

 

코드 설명   

a=input()
calist=["c=","c-","dz=","d-","lj","nj","s=","z="]

입력 받은 단어를 변수 a에 담습니다.

크로아티아 알파벳을 변경한 형태의 단어들을 calist에 담습니다.

 

for i in calist:
    if i in a:
        a=a.replace(i,"1")

calist에 있는 요소 i가 단어 a에 있다면, 단어 a속 담긴 i를 1로 변경해줍니다.

 

print(len(a))

a의 길이를 출력해줍니다.

 

관련 개념 정리   

input

파이썬에서는 값을 사용자로부터 입력받을때 input함수를 사용합니다.

입력받은 값을 넣을 변수 이름 = input("띄울 메세지")

 

단! input함수는 입력받은 모든 내용을 문자열로 인식합니다. 따라서 입력받은 내용을 정수로 변환하려면

d = int(input())

와 같은 형태로 작성하거나,  나중에 변수를 사용할때

print(int(d)+2)

와 같이 int()로 감싸서 작성할 수 있습니다.

 

 

for문

특정 코드들을 원하는 횟수 만큼 반복 시킬 때 사용하는것이 for문입니다.

for문의 기본 구조는 아래와 같습니다.

for i in 리스트(or 문자열, 튜플):
	실행할 코드

리스트,문자열,튜플의 첫 글자나 요소부터 마지막 글자나 요소까지 차례대로 변수에 대입됩니다.

 

for문의 범위와 변수값을 숫자로 정하고 싶을때는 아래와 같이 range함수를 사용합니다.

for i in range(시작숫자,종료숫자,step):
	실행할 코드

step은 얼만큼씩 변수를 증가 시킬지 정하는 것 입니다.

시작숫자와 step은 생략되어도 됩니다.

 

 

if문

<조건> 하면, <코드>를 실행하고 싶을때 쓸 수 있는것이 바로 if문입니다.

기본적인 형태는 아래와 같습니다.

if 조건문 1:
	실행 코드 1 ...
elif 조건문 2:
	실행 코드 2 ...
else:
	실행 코드 3 ...

해석을 하자면, 조건문 1을 충족하면 실행 코드 1을 실행하고, 그게 아닌 조건문 2를 충족하면 실행 코드 2를 실행한다.

조건문 1과 조건문 2를 모두 충족하지 않으면 실행 코드 3을 실행한다. 입니다.

elif와 else는 필수는 아닙니다.

 

 

replace

replace함수는 문자열에서 사용자가 지정한 문자를 다른 문자로 바꿀 수 있게 해주는 함수입니다.

a="Hello! I'm Hungry"
a.replace("H","?")
# a => ?ello! I'm ?ungry

위와 같은 형태로 사용 가능합니다.