Toolofv 님의 블로그

[Python] 백준 - 2941 크로아티아 알파벳 본문

Algorithm

[Python] 백준 - 2941 크로아티아 알파벳

Toolofv 2024. 11. 15. 17:45
 

백준 - 2941 크로아티아 알파벳

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

www.acmicpc.net

문제

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

 

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

 

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

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

입력

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

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

출력

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

 

 

문제해결방법

 

 

1. 파이썬replace함수를 활용할 수 있다. 

 

def repl(word, o, n):
    res = ''
    i = 0
    while True:
        if i == len(word):
            break
        if word[i:i+len(o)] == o:
            res += n
            i += len(o)
        else:
            res += word[i]
            i += 1
    return res

- replace함수를 구현했을 때

 

2. 변경된 크로아티아 알파벳을 발견할 때마다 구할 길이를 +1 추가해주고, 남은 알파벳들을 최종적으로 더해준다.

 

 

- 코드

import sys
from collections import deque
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

d = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input().strip()
lth = 0

for i in d:
    for j in range(len(word)):
        if i == word[j:j+len(i)]:
            lth += 1
    word = word.replace(i, ' ')
word = word.replace(' ', '')
print(lth+len(word))
반응형