본문 바로가기

알고리즘/python

[python/파이썬] 백준 2941 크로아티아 알파벳

반응형

[문제 출처]

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

 

[소스 코드1 - 틀렸습니다]

크로아티아 알파벳을 리스트에 저장하고 그 리스트에 있는 값이 문자열에 포함되었는지 확인하는 방법을 사용하였다.

같은 알파벳이 여러 번 들어갈 수 있기에, count() 함수를 사용해 result 값에 더해준 후에,

해당 알파벳을 문자열에서 모두 제거했다.

모든 크로아티아 알파벳에 대해서 이 과정을 반복한 후에

남은 알파벳이 몇 개인지 세기 위해서 문자열의 길이를 result에 더해 결과를 출력했다.

 

문제에서 제공하는 테스트 케이스에 대해서는 다 맞는 답이 나오는데 어느 부분에서 틀린 건지 잘 모르겠다.

반례나 문제가 되는 부분을 찾으시는 분이 있다면 알려주시면 좋겠는 마음에 코드를 첨부한다.

d = input()
alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

result = 0
for a in alphabet:
  if a in d:
    result += d.count(a)
    d = d.replace(a, '')

result += len(d)
print(result)

 

 

[소스 코드2 - 맞았습니다!!]

내가 접근한 방법과 비슷한 방법이다.

소스 코드1(나의 풀이)에서는 크로아티아 알파벳에 해당하는 부분을 공백으로 replace 해서 

크로아티아 알파벳이 아닌 부분만 남기는 방법을 사용했는데,

이 방법은 공백이 아닌 길이가 1인 문자로 대체하여 마지막에 문자열의 길이를 출력한다.

#2941
d = input()
alphabet = ['c=', 'c-' ,'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

for a in alphabet:
  if a in d:
    d = d.replace(a, '*')

print(len(d))
반응형