반응형
[문제 출처]
https://www.acmicpc.net/problem/2941
[소스 코드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))
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 1904 01타일 (0) | 2022.10.12 |
---|---|
[python/파이썬] 백준 24416 알고리즘 수업 - 피보나치 수 1 (0) | 2022.10.11 |
[python/파이썬] 백준 1546 평균 (0) | 2022.10.06 |
[python/파이썬] 백준 3036 링 (1) | 2022.10.05 |
[python/파이썬] 백준 1037 약수 (1) | 2022.10.04 |