Programming/BOJ

백준 BaekJoon Online Judge // 2941

껨코 2021. 1. 18. 16:09

백준 알고리즘 BaekJoon Online Judge 2941번 "크로아티아 알파벳" 문제입니다.

S = input()
cnt = 0
lst = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
while len(S) > 0:
  if len(S) >= 3:
    if S[0:3] in lst:
      S = S.replace(S[0:3], '', 1)
      cnt += 1
    elif S[0:2] in lst:
      S = S.replace(S[0:2], '', 1)
      cnt += 1
    else:
      S = S.replace(S[0:1], '', 1)
      cnt += 1
  elif len(S) == 2:
    if S[0:2] in lst:
      S = S.replace(S[0:2], '', 1)
      cnt += 1
    else:
      S = S.replace(S[0:1], '', 1)
      cnt += 1
  else:
    S = S.replace(S[0:1], '', 1)
    cnt += 1
print(cnt)

두 세개으 문자들을 하나의 알파벳인 경우를 체크하고 나머지는 문자 1개당 알파벳 1개로 따지는 문제다.

 

더 효율적인 방법들도 있겠지만 나는 앞에서부터 탐색하면서 해당되는 문자열은 2~3 한 번에 제거하고

 

아닐 경우에는 1개씩 replace 메서드로 제거하는 방법을 택했다.

 

비효율적일수도 있겠지만 이게 내 생각에는 조금 더 직관적인 방법이라고 생각한다.