python | replace와 for문 변수 저장

나경호·2022년 4월 9일
0

Memo | python

목록 보기
6/7
post-thumbnail

관련 문제

문제[백준 2941]

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

크로아티아 알파벳변경
čc=
ćc-
dz=
đlj
ljlj
njnj
šs=
žz=

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

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

입력

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

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

출력

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

예제 입력 1

ljes=njak

예제 출력 1

6

예제 입력 2

ddz=z=

예제 출력 2

3

예제 입력 3

nljj

예제 출력 3

3

예제 입력 4

c=c=

예제 출력 4

2

예제 입력 5

dz=ak

예제 출력 5

3

여기에서 원하는 문제의 답은 수만 구하면 되므로

def solve(K):
    replace_format ='č/c=,ć/c-,dž/dz=,đ/d-,lj/lj,nj/nj,š/s=,ž/z='
    replace_table= list(map(lambda s:s.split('/'), replace_format.split(',')))
    after = []
    before = []
    for t in replace_table:
        after.append(t[0])
        before.append(t[1])
    for i in before:
        K = K.replace(i, '*')
    return len(K)

K = input()
print(solve(K))

로 표현 할 수 있다. 여기서 집중해야할 포인트는 두가지인데

첫 번째

replace_format ='č/c=,ć/c-,dž/dz=,đ/d-,lj/lj,nj/nj,š/s=,ž/z='
replace_table= list(map(lambda s:s.split('/'), replace_format.split(',')))
#replace_format을 ,로 나누어준 리스트들을 다시한번 lambda s:s.split()을 통해 나누어준 것

이 코드를 통해 주어진 값을 간단하게 정리할 수 있었다.

두 번째

for i in before:
        K = K.replace(i, '*')

이를 통해 K변수에 수정된 값으로 for문에서 다시 돌릴 수 있었다.

만약 이 문제가 다른 문자로 변화시키는 문제였다면?

def solve(K):
    replace_format ='č/c=,ć/c-,dž/dz=,đ/d-,lj/lj,nj/nj,š/s=,ž/z='
    replace_table= list(map(lambda s:s.split('/'), replace_format.split(','))) 
    for t in replace_table:
        after, before = t 
        K = K.replace(before, after) 
    return K 

K = input()
print(solve(K))
profile
기억창고👩‍🌾

0개의 댓글

관련 채용 정보