Problem
https://www.acmicpc.net/problem/8958
Solution
처음에 입력받은 값 5는 for문을 반복하는 횟수로 사용했다.
다음으로 입력받은 OX문자열은 X를 기준으로 split해서 리스트로 만들었다. 그렇게 되면 OOXXOXXOOO를 입력하면 리스트 a의 값은 ['OO', '', 'O', '', 'OOO']
이 된다. 이때 점수가 산정되는 방식을 살펴보면 OO-> 1+2=3점, O-> 1점, OOO-> 1+2+3=6점으로, O의 개수가 n개라고 할 때 1부터 n까지의 자연수의 합으로 나타난다. 따라서 등차수열의 합 공식을 사용하여 리스트의 각 요소에 해당하는 점수를 n*(n+1)/2
로 나타낼 수 있다. 이 값을 더해나가면 해당 입력값에 해당하는 출력값인 점수를 얻을 수 있다.
code
1
2
3
4
5
6
7
8
9
10
itr = int(input())
for _ in range(itr):
qw = 0
a = input().split('X')
for i in a:
if 'O' in i:
n = i.count('O')
qw+=n*(n+1)/2
print(int(qw))