728x90
반응형
이번 포스팅은 www.acmicpc.net/problem/2941에서 푼 것을 토대로 작성했습니다.
문자열의 아홉 번째 문제인 크로아티아 알파벳입니다.
문제
문제 해석
1. 크로아티아 알파벳이 변경되는 문자를 입력받는다.
2. 목록에 없는 알파벳은 한 글자씩 센다.
3. 입력받은 알파벳의 개수를 출력한다.
Python 코드
s = input().lower()
a = list(['c=','c-','dz=','d-', 'lj', 'nj', 's=', 'z='])
cnt = 0
for i in range(len(a)):
cnt += s.count(a[i])
s = s.replace(a[i], " ")
s = s.replace(" ","")
print(cnt+len(s))
Python 코드 풀이
1. 입력받은 알파벳을 소문자로 만들고
list에 변경되는 크로아티아 알파벳을 보관한다.
s = input().lower()
a = list(['c=','c-','dz=','d-', 'lj', 'nj', 's=', 'z='])
2. for문을 만들어 count를 이용하여 개수를 세고 cnt에 추가시킨다.
replace를 사용하여 개수를 세었던 알파벳을 공백으로 교체한다.
for i in range(len(a)):
cnt += s.count(a[i])
s = s.replace(a[i], " ")
3. replace를 사용하여 공백을 다시 ""로 지워주고
남은 알파벳 개수를 cnt에 더해서 총 알파벳 개수를 출력한다.
s = s.replace(" ","")
print(cnt+len(s))
Python 코드 풀이 2
저는 이렇게 풀이를 했지만 replace를 이용하여 변경되는 알파벳을 한 단어로 만들어서
코딩한다면 더 쉽게 만들 수 있었습니다.
s = input().lower()
a = list(['c=','c-','dz=','d-', 'lj', 'nj', 's=', 'z='])
cnt = 0
for i in range(len(a)):
s = s.replace(a[i], "#")
print(len(s))
코드는 짧아졌지만 시간은 더 늘어났는데
왜 그런지 모르겠습니다..
다음 포스팅으로 찾아오겠습니다 :)
728x90
반응형
'Python > 백준 알고리즘' 카테고리의 다른 글
[BaekJoon/Python] : 백준 1712번 - 손익분기점 (0) | 2021.02.03 |
---|---|
[BaekJoon/Python] : 백준 1316번 - 그룹 단어 체커 (0) | 2021.02.02 |
[BaekJoon/Python] : 백준 5622번 - 다이얼 (0) | 2021.01.12 |
[BaekJoon/Python] : 백준 2908번 - 상수 (0) | 2021.01.11 |
[BaekJoon/Python] : 백준 1152번 - 단어의 개수 (0) | 2021.01.11 |