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

유재우·2022년 4월 16일
0

문제

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

  • 첫번째 시도
word = input()
sum = len(word)
print(sum)
if "c=" in word:
    sum -= 1
if "c-" in word:
    sum -= 1
if "dz=" in word:
    sum -= 2
if "d-" in word:
    sum -= 1
if "lj" in word:
    sum -= 1
if "nj" in word:
    sum -= 1
if "s=" in word:
    sum -= 1
if "z=" in word:
    sum -= 1
print(sum)
  • 어떤 방식으로 푸는지는 감을 잡았지만 중복 단어가 있을 경우에 대한 마땅한 풀이가 생각이 나지 않는다.
  • 정답
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
for c in croatia:
    word = word.replace(c, 'a')
print(len(word))
  • replace는 문자열에서 어떠한 값을 찾아 변경해 주는 역할을 한다.
    이걸 이용하여 croatia에 변경될 단어들을 입력해주고 for문을 이용하여 크로아티아 문자들을 'a'로 변경하여 2,3개의 문자를 하나로 바꿔주어 단어의 길이를 출력하면 된다.
profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글