본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 2941번 : 크로아티아 알파벳

by 빛밤하늘 2021. 6. 27.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫째 줄에 최대 100글자의 크로아티아 단어를 입력합니다.
# 알파벳 소문자, '-', '='로만 이루어져 있습니다.
# 맨 끝의 \n은 떼어줍니다.
croatian_word = stdin.readline().rstrip()
# 특이한 크로아티아 알파벳을 저장하는 튜플 변수를 선언합니다.
croatian_alphabet = ('c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=')
# 입력한 크로아티아 단어의 길이를 저장하는 변수를 선언합니다.
word_length = len(croatian_word)
# 크로아티아 알파벳의 개수를 저장하는 변수를 선언합니다.
# 0으로 초기화합니다.
alphabet_cnt = 0

# 크로아티아 단어 한 글자씩 읽을 인덱스를 저장하는 변수를 선언합니다.
# 0으로 초기화합니다.
idx = 0
# 크로아티아 단어를 한 글자씩 반복해봅니다.
while idx < word_length:
    # 현재 인덱스의 글자와 다음 글자를 저장하는 변수를 선언합니다.
    two_alphabet_bundle = croatian_word[idx:idx+2]
    # 현재 인덱스와 다음 다음 글자까지 저장하는 변수를 선언합니다.
    three_alphabet_bundle = croatian_word[idx:idx+3]

    # two_alphabet_bundle이 특이한 크로아티아 알파벳에 속한다면
    if two_alphabet_bundle in croatian_alphabet:
        # 크로아티아 알파벳 개수에 1을 더해줍니다.
        alphabet_cnt += 1
        # 인덱스에 2를 더해줍니다.
        idx += 2
    # three_alphabet_bundle이 특이한 크로아티아 알파벳에 속한다면
    elif three_alphabet_bundle in croatian_alphabet:
        # 크로아티아 알파벳 개수에 1을 더해줍니다.
        alphabet_cnt += 1
        # 인덱스에 3을 더해줍니다.
        idx += 3
    # 그 외의 경우에는
    else:
        # 크로아티아 알파벳 개수에 1을 더해줍니다.
        alphabet_cnt += 1
        # 현재 인덱스의 한 글자가 알파벳이므로 인덱스에 1을 더해줍니다.
        idx += 1

# 크로아티아 알파벳의 개수를 출력합니다.
print(alphabet_cnt)

결과

 

제가 코드를 짤 때에는 단순히 2글자, 3글자인 크로아티아 알파벳을 변수로 따로 저장해서 풀면

간단하게 해결되겠구나 하고 풀었습니다.

맞았습니다 결과를 보고 다른 사람들의 파이썬 결과를 보니 replace로 아주 손쉽게 푼 코드들이 많았습니다.

왜 저는 그렇게 더 손쉬운 방법이 생각나지 않았는지 창피함이 많이 드네요...

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글