백준 8958번: OX퀴즈

용상윤·2021년 1월 31일
0

백준 8958번: OX퀴즈

문제

문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+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의 개수)을 이용하려 했으나 더 간단한 방법을 찾음.
profile
달리는 중!

0개의 댓글