#54. 백준 2941번 문제 풀이: 크로아티아 알파벳 문제 원본 보기
예전 운영체제에서는 크라아티아 알파벳을 입력할 수 없어서, 아래와 같이 알파벳을 변경해서 입력했다. 크로아티아 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어 ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k) 이다. dž, lj, nj 는 분리될 수 없는 알파벳 하나로 본다. 단어가 주어졌을 때, 몇개의 크로아티아 알파벳인지 출력하시오. 입력: 100글자 이내의 단어 출력: 크로아티아 알파벳 수
입력/출력
--입력--
ljes=njak
--출력--
6
--입력--
ddz=z=
--출력--
3
--입력--
nljj
--출력--
3
--입력--
c=c=
--출력--
2
--입력--
dz=ak
--출력--
3
문제풀이+해설
주어진 단어문자열에서 한 글자씩 위치를 이동하면서 크로아티아 변경문자가 있는지 확인하면 된다.
--
단어
루프 (문자열 끝에 도달할 때 까지):
 단어문자열 다음글자씩 이동
 변경문자가 있으면 변경글자수 만큼 위치 추가 이동, 카운트 +1 증가
 변경문자가 없으면 위치 한글자 이동, 카운트 +1 증가
루프 끝
카운트 출력
--
code sol.
# 크로아티아 알파벳 변경 문자들 목록
ap = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
wd = input() # 단어를 입력 받는다.
l = len(wd) # 단어길이
i = 0 # 단어 위치 인덱스
count = 0 # 알파벳 개수
while i < l:
  ck = 0 # 변경 알파벳 체크 여부, 초기값 0
  for a in ap: 
    an = len(a) # 변경 알파벳 글자수
    if wd[i:i + an] == a: # 변경 문자와 같으면 알파벳 개수 증가
      count += 1 # 변경 문자수가 많더라도 하나만 증가
      i += an # 변경된 알파벳 수 만큼 인덱스값 증가
      ck = 1 # 변경 알파벳 체크 여부, 1
      break # 변경된 알파벳을 찾았으므로 추가 비교 중단.
  
  # 일반 알파벳이면 count(카운트) 와 i(인덱스) 하나씩 증가
  if ck == 0:
    count += 1
    i += 1

print(count) # 알파벳 글자수 출력
© 코드솔 - CodeSol. All Rights Reserved.