728x90
📢 문제 설명
크로아티아 알파벳은 영어 알파벳('a' ~ 'z')을 포함하고 추가로 'c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='을 포함한다.
✏️ 코드 풀이
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
for x in range(97, 123):
croatia.append(chr(x))
s = input()
c = 0
for y in croatia:
if y in s:
c += s.count(y)
s=s.replace(y, ".")
#print(s)
print(c)
- 크로아티아 알파벳을 리스트로 저장한다.
크로아티아 만의 특별한 알파벳을 먼저 리스트로 저장한 후, 영어 알파벳을 추가한다.croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] for x in range(97, 123): croatia.append(chr(x))
- 사용자가 입력한 문자열 중 크로아티아 알파벳가 몇 개 있는지 센다.
크로아티아의 알파벳에 대하여 차례로 (크로아티아 알파벳 -> 영어 알파벳 순) 사용자가 입력한 문자열 내에 존재하는지 검색하도록 했다. 이 때, 해당하는 알파벳이 존재하는 경우, count 함수를 통해 해당 문자열 내에 몇 번 그 값들이 나타나는지 확인 후 저장한다. 그리고 replace 함수를 통해 해당 알파벳에 대해 중복적으로 카운트하지 않도록 "." 등으로 변환한다.for y in croatia: if y in s: c += s.count(y) s=s.replace(y, ".")
개선된 풀이
풀이 상에서 매번 검색한 후 replace할 때마다 문자열을 출력하도록 했다.
이 문제를 풀 때 고려해야 했던 점은 두 개 이상의 문자가 연속되는 크로아티아 알파벳에 대한 처리였다. 이를 해결하기 위해 크로아티아 알파벳에 대해 우선적으로 확인하고 "."으로 replace하도록 했다.
기존의 코드에서는 영어 알파벳에 대해서도 동일한 방식으로 하도록 했지만, 그렇게 할 필요가 없다!
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
#for x in range(97, 123):
# croatia.append(chr(x))
s = input()
c = 0
for y in croatia:
if y in s:
c += s.count(y)
s=s.replace(y, ".")
#print(s)
print(len(s))
SMALL
'Programming > Python' 카테고리의 다른 글
[백준/python3] 1929. 소수 구하기 (에라토스테네스의 체) (0) | 2022.01.20 |
---|---|
[백준/python3] 1316. 그룹 단어 체커 (0) | 2022.01.10 |
[백준/python3] 1002. 터렛 (0) | 2022.01.09 |
[백준/python3] 1157.단어 공부 (0) | 2022.01.08 |
[백준/python3] 2675. 문자열 반복 (0) | 2022.01.07 |