BAEKJOON - 8958 OX 퀴즈
BAEKJOON - 8958 OX 퀴즈
백준 8958 ox quiz
Task description#
“OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
“OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
Condition#
- 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다.
- 길이가 0보다 크고 80보다 작은 문자열이 주어진다.
- 문자열은 O와 X만으로 이루어져 있다.
input#
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
output#
10
9
7
55
30
Solution#
- 입력 받은 N 만큼 케이스를 입력받아 반복한다.
- 케이스를 입력받고 길이만큼 반복한다.
- 점수(score)와 더해줄 값(addition)을 0으로 초기화 한다.
- 케이스를 문자열로 변경하고 문자열 하나씩 슬라이스하여 str에 저장.
- str의 값을 비교하여 1. O인경우, addition을 1 증가시키고 score에 addition을 더해준다. 2. X인경우, addition을 0 으로 초기화 시킨다.
- 케이스의 마지막 str일때 score를 출력한다.
n = int(input()) # 입력받을 케이스 갯수
for i in range(n): # 입력받은 수 만큼 반복
case = input() # 케이스 입력받음 ex) OOXXOXXOOO
score = 0 # 케이스의 점수
addition = 0 # 점수에 더해지는 값
for j in range(0,len(case)): # 케이스의 길이 만큼 len(OOXXOXXOOO)
str = case[j] # 케이스를 인덱스로 1개씩 순회
if str == 'O' : # O인경우 addtion 1증가 score에 addtion 더함
addition +=1
score += addition
else : # X인경우 addtion 0으로 초기화
addition = 0
if j == len(case) -1 : # 케이스의 마지막 str인 경우 score 출력
print(score)
TestCase#
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX