白駿8958号:OXテスト


白駿8958号:OXテスト
質問する
質問する
「OOXOXXOOO」というOX問答の結果がありますOは質問に答えたが,Xは間違った質問だ.問題が発生した場合、問題のスコアは問題に接続されたOの数になります.例えば、10番の問題の点数は3です.
「OOXOXOOO」の点数は1+2+0+1+0+1+2+3=10点です.
OXテストの結果が得られたら、得点プログラムを作成してください.

(入力)
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
(出力)
10
9
7
55
30
コード#コード#
import sys
input = sys.stdin.readline

T = int(input())

for _ in range(T) :
    ox = input()
    temp_score = 0  # O그룹의 값을 저장하는 임시변수
    score = 0
    
    for i in range(len(ox)) :
        if ox[i] == 'O' :
            temp_score += 1
            score += temp_score

        elif ox[i] == 'X' :
            temp_score = 0

    print(int(score))
コメント
  • の中間に現れるO群の値をn(n+1)/2(n=Oの個数)とすることを試みたが,より簡単な方法が見出された.