1) 사이트
2) 문제
크로아티아 알파벳에 대치되는 문장의 수 + 남은 문장의 수의 결과를 출력해주면 됩니다!
저는 처음엔 find를 이용해 특정 문자열이 있는 인덱스를 찾아 하나하나 지우는 방식으로 진행했지만... 갖가지로 안되는 케이스를 만나 힘들었습니다...
케이스1) 문장을 지우면 또다른 문장끼리 만나 크로아티아 알파벳을 이룬다. (답은 3)
케이스 2) 문장을 만나지 못하게 " " 띄어쓰기를 넣어주면 새로운 문장을 만들 때 여러모로 잘못된 문장을 만든다. (답은 4)
그리하여 count를 이용해 "dz="와 "z="만 유의하면 되는 방식으로 쉽게 접근해보았습니다!
3) 파이썬 코드
result=0
word=0
cro=["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
sentence=input()
for i in cro:
if i == "z=":
result=result+sentence.count(i)-sentence.count("dz=")
word=word+len(i)*(sentence.count(i)-sentence.count("dz="))
else:
result=result+sentence.count(i)
word=word+len(i)*sentence.count(i)
print(result+len(sentence)-word)
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 문장 안에 있는 특정 문자열이 몇 개가 있는지 확인하는 법
-> 문자열.count("특정 문자열")
3-2) 설명
1. 크로아티아 문자열을 리스트로 정리한다.
cro=["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
2-1. 문자열을 받아 크로아티아 알파벳이 몇 개인지 계산한다.
sentence=input()
for i in cro:
result=result+sentence.count(i)
word=word+len(i)*sentence.count(i)
word는 크로아티아 알파벳을 계산하는 것이 아닌 크로아티아 알파벳의 길이를 계산한다.
예를 들어 "c="가 있다면
result는 "c="의 갯수
word는 "c="의 길이 (2) * "c="의 갯수 #실질적인 길이를 계산한다.
2-2. "dz="와 "z="를 유의해준다. ("dz="는 "z="로 계산되면 안된다.)
for i in cro:
if i == "z=":
result=result+sentence.count(i)-sentence.count("dz=")
word=word+len(i)*(sentence.count(i)-sentence.count("dz="))
else:
result=result+sentence.count(i)
word=word+len(i)*sentence.count(i)
"dz="가 있으면 "z="가 무조건 계산되기 때문에 "z="갯수가 더많거나 같을 것이다.
때문에 "z"의 갯수에서 "dz="를 빼준다.
3. 크로아티아 알파벳의 갯수와 남은 알파벳을 계산해 출력해준다. (word를 계산해준 이유!)
print(result+len(sentence)-word)
len 함수는 "c="를 하나로 보지 않고 2개로 보기 때문에 하나하나 길이 수를 계산해주는 word가 필요했다.
때문에 다음과 같이 연산해 출력해준다.
4) c언어 코드
아직~
궁금한 점이나 토론했으면 좋은 사항들 같이 나눠요 !
끝!
'알고리즘 > 백준' 카테고리의 다른 글
1712번 손익분기점 (0) | 2021.05.29 |
---|---|
1316번 그룹 단어 체커 (0) | 2021.05.23 |
5622번 다이얼 (0) | 2021.05.23 |
2908번 상수 (0) | 2021.05.19 |
1152번 단어의 개수 (0) | 2021.05.11 |