오리의 울음 소리는 "quack"이다. 올바른 오리의 울음 소리는 울음 소리를 한 번 또는 그 이상 연속해서 내는 것이다. 예를 들어, "quack", "quackquackquackquack", "quackquack"는 올바른 오리의 울음 소리이다.
영선이의 방에는 오리가 있는데, 문제를 너무 열심히 풀다가 몇 마리의 오리가 있는지 까먹었다.
갑자기 영선이의 방에 있는 오리가 울기 시작했고, 이 울음소리는 섞이기 시작했다. 영선이는 일단 울음소리를 녹음했고, 나중에 들어보면서 총 몇 마리의 오리가 있는지 구해보려고 한다.
녹음한 소리는 문자열로 나타낼 수 있는데, 한 문자는 한 오리가 낸 소리이다. 오리의 울음 소리는 연속될 필요는 없지만, 순서는 "quack"이어야 한다. "quqacukqauackck"과 같은 경우는 두 오리가 울었다고 볼 수 있다.
영선이가 녹음한 소리가 주어졌을 때, 영선이 방에 있을 수 있는 오리의 최소 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.
영선이 방에 있을 수 있는 오리의 최소 수를 구하는 프로그램을 작성하시오. 녹음한 소리가 올바르지 않은 경우에는 -1을 출력한다.
- 문장의 길이가 5로 나누어 떨어지지 않으면 잘못된 경우이니 -1출력
- 문장 맨 앞에 문자가 q가 아닌경우 잘못된 경우이니 -1 출력
- 그 외 모든 조건을 만족하면 탐색 시작
- q 로 시작했는지 체크
- k로 끝나는지 체크
import sys
input = sys.stdin.readline
strings=list(input().rstrip())
answer=[]
def findNext(prev,curr):
for a in answer:
if a[-1]==prev:
a.append(curr)
return True
return False
flag=0
for s in strings:
if s=='q':
if not findNext('k','q'):
answer.append(['q']) #새로운 리스트를 추가
elif s=='u':
if not findNext('q', 'u'):
flag=1
break
elif s=='a':
if not findNext('u', 'a'):
flag = 1
break
elif s=='c':
if not findNext('a', 'c'):
flag = 1
break
else:
if not findNext('c', 'k'):
flag = 1
break
count=0
for a in answer:
if 'quack' in ''.join(a) and len(a)%5==0:
count+=1
else:
flag=1
break
if flag==1:
print(-1)
else:
print(count)