본문 바로가기
Algorithm

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

by jangThang 2022. 1. 30.
반응형

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2941번: 크로아티아 알파벳

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

    'c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='

     크로아티아 알파벳이 섞인 문자열의 길이를 구하는 문제입니다. 크로아티아의 알파벳은 2개 이상의 문자 조합으로 표현하며, 1개로 취급합니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하여 해결할

    star7sss.tistory.com

     크로아티아의 문자열을 찾아내는 구현 문제입니다. 입력된 문자열을 순회하면서, 크로아티아 문자가 있는지 체크해야 합니다.

     

     

     

    3. 코드

    croatia = input()
    cnt = len(croatia)
    pre = '' #이전 글자
    ppre = '' #이전 이전글자
    for i in croatia:
        if i == '-':
            cnt -= 1
        if i == '=':
            cnt -= 1
            if pre == 'z' and ppre == 'd':
                cnt -= 1
        if i == 'j' and (pre == 'l' or pre == 'n'):
            cnt -= 1
        ppre = pre
        pre = i
    print(cnt)

     가장 직관적인 풀이방법입니다. 반복문으로 문자열을 순회하면서, 조건문으로 '크로아티아 문자열'이 있는지 체크합니다.

     '-'가 들어간 'c-', 'd-'는 2글자를 1글자로 취급하므로, 전체 길이에서 1만 빼줍니다. 

     '='가 들어간 'dz=', 's=', 'z='는 구분이 필요합니다. 이전, 그 이전 문자를 확인해서 감별 후 빼줍니다.

     'j'가 들어간 'lj', 'nj'는 2글자를 1글자로 취급하므로, 전체 길이에서 1만 빼줍니다.

     

     

    cf) 다른 풀이

    croatia = input()
    alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
    for i in alphabet:
        croatia = croatia.replace(i, 'C')
    print(len(croatia))

     단순히 크로아티아 문자를 한 문자로 치환해주면 됩니다. 문자열 처리 함수 중 replace를 이용하면, 바꾸고 싶은 문자를 원하는 문자로 치환할 수 있습니다.

     

    String.replace(a, b): String 내의 a문자를 b문자로 치환(찾아 바꿈)

     

     

     

    반응형

    댓글