https://www.acmicpc.net/problem/8958
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
n = input()
list_u = []
for i in range(int(n)):
list_u.append(input())
list = []
def quiz(a):
if a.count('OX') == 0:
aa = a.count('O')
aaa = aa*(aa+1)/2
return aaa
else:
aa = a.replace('OX', 'O X').split()
for i in range(len(aa)):
aa1 = int(aa[i].count('O'))
list.append(aa1*(aa1+1)/2)
aaa = sum(list)
list.clear()
return aaa
for i in range(int(n)):
print(quiz(list_u[i]))
진짜 모르겠다..
스택을 써봐
감사합니다
해당 댓글은 삭제되었습니다.
감사합니다
함수를 굳이 안 만들어도 됨 대충 흐름은 1로 초기화된 score를 설정해두고 반복문 돌면서 O를 만나면 total_score에 score를 더하고 score += 1하고 X 만나면 score를 1로 초기화. 이렇게 해보셈
감사합니다
X로 스플릿 하고, 각 O...O의 길이를 N이라 하면 N(N+1)/2를 더하면 됨
sum([len(oo) * (len(oo) + 1) / 2 for oo in input().split('X')])