📝 문제
> 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
https://www.acmicpc.net/problem/2941
🎨 풀이
💡 성공 코드
import sys
s = str(sys.stdin.readline())
croatia = ['c=','c-','dz=','d-','lj','nj','s=','z=']
count = 0
# 일치하는 거 추려서 count에 더해주고 원본에서는 없애기
for string in croatia :
if string in s :
count += s.count(string)
s = s.replace(string,' ')
# 남은 거 처리
s = s.replace(' ','') # 그 테트리스마냥 촥촥 되는 거 방지.
s = list(s)
count = count + len(s) - 1 # list로 바꾸는 과정에서 개행문자가 list에 포함되어 -1을 해줌.
print(count)
> 핵심 : 크로아티아 알파벳 있는지 하나씩 비교 후 count & 남은 거 개수 세서 count
1. s 문자열 입력받는다.
2. croatia 리스트에 'c=', 'c-' , ... 등으로 구분해서 넣어준다.
3. croatia 리스트에 있는 문자들 하나씩 for문을 돌린다. ----------------------------------------(for문 시작) ----------------------
4. 그 문자가 s 안에 있으면, count 해서 그 수만큼 count 변수에 넣어준다.
그 후, replace를 이용해 해당 스트링을 ' ' (공백) 으로 변환시킨다.
--------------------------------------------------------------------------------------------------------(for문 끝)--------------------------------------
5. 아까 4에서 공백으로 변환시킨걸 '' 로 변환시켜서 없애준다.
- 이 과정이 들어간 이유는 예제 3번과 같은 경우 때문임.
- 예제 3번 : nljj 로 lj + n + j = 3이 나와야하는데, 이 과정을 빼버리면 lj + nj = 2 가 됨! 이걸 방지하기 위함임.
6. s를 list화 시킴. (길이 세서 넣으려고)
7. count = count + len(s) - 1을 해서 넣어줌.
- '-1' 해주는 이유 : 개행문자가 포함되어있어서 그거 빼주려고 그럼.
- ex) s = ['a','p',t','\n']
끝~
⭐ 느낀점
> 헤헹 피곤하다. 이 피곤함도 조만간 끝이 난다고 생각하니 좋기도 하고..,, 빨리 끝났으면 싶기도 하고,, 그런만큼 이 순간을 후회로 남기지 않고 싶기도하고 여튼 그렇다. 좀만~~~~~~ 더 힘내보자 조금만 더~
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 1712번 - 손익분기점 (파이썬) (0) | 2022.06.22 |
---|---|
[백준] 1316번 - 그룹 단어 체커 (파이썬) (0) | 2022.06.21 |
[백준] 5622번 - 다이얼 (파이썬) (0) | 2022.06.19 |
[백준] 2908번 - 상수 (파이썬) (0) | 2022.06.18 |
[백준] 1152번 - 단어의 개수 (파이썬) (0) | 2022.06.17 |