백준 알고리즘 문제 풀이 [Python]

[백준/Python] 2941번 크로아티아 알파벳 (문자열)

wlalsu_u 2023. 2. 23. 16:41

2941번 : 크로아티아 알파벳 문제

 

 

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다.

따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

 

 

크로아티아 알파벳 변경

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

 

 

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다.

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

 

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다.

lj와 nj도 마찬가지이다.

위 목록에 없는 알파벳은 한 글자씩 센다.

 

 

 

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

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

 


 

풀이 코드

 

word = input()

alphabet = ['c=','c-','dz=','d-','lj','nj','s=','z=']
count = 0

for i in alphabet:
    word = word.replace(i, '*')

print(len(word))

 

 

[문제점]

크로아티아 알파벳은 각 문자마다 알파벳의 수가 다름 

▶2~3 글자로 이루어진 알파벳은 한 글자로 먼저 변환하자!

 

 

word = input()

 

 

- 첫째 줄에서 알파벳 소문자와 '-', '=' 로 이루어진 단어를 입력받음

 

- input() 을 통해 한 줄의 문자열을 입력받을 수 있음

 

- 입력받은 문자열을 변수 word 에 저장

 

 

 

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

 

 

- 2~3개의 문자로 이루어진 크로아티아 알파벳을, 하나의 문자열로 저장

 

- 하나의 문자열로 저장한 알파벳을 alphabet 리스트에 저장

 

 

 

 

count = 0

 

 

- 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 세기 위한 변수

 

- 0으로 초기화

 

 

 

for i in alphabet:

 

 

- 'for 변수 in 리스트' 형태로, in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 사용

 

- alphabet 리스트에 저장한 8개의 크로아티아 알파벳을 하나씩 순차 방문

 

 

 

word = word.replace(i, '*')

 

 

- replace() 함수 사용

 

- alphabet 리스트에 저장한 8개의 크로아티아 알파벳을 * 로 변경

 

( 2~3개의 문자로 이루어진 문자를, * 하나의 문자로 변경 가능)

 

 

 

[replace 함수]
- 문자열을 변경하는 함수
- 문자열에서 특정 문자를 다른 문자로 변경할 수 있음

replace(old, new, [count]) 
# old : 변경하고자 하는 문자
# new : 변경할 문자
# count : 변경 횟수 (지정하지 않으면, old 문자열 전체 변경)

 

 

 

print(len(word))

 

 

- 문자열의 길이를 구하는 len() 함수 사용

 

- len(word) 에서, replace 로 변경된 새로운 문자열의 문자 개수를 출력

 

 

 

 

 

 

 

 

나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC