"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
각 테스트 케이스마다 점수를 출력한다.
입력 1
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
출력 1
10
9
7
55
30
n = int(input()) # 테스트 개수 입력받기
results= [0]*n # 결과 값을 저장할 0으로 이루어진 results 생성
for i in range(n):
s=0 # 연속되는 점수를 저장할 S
j=0 # 인덱스 값을 저장할 j
ox_result = input() # 테스트 케이스를 입력받는다
scores = [0]*len(ox_result) # 테스트 길이만큼 점수를 저장할 scores 생성
for r in ox_result: # 문제의 답을 하나씩 가져온다
if r == "O": # "O"라면
s+=1 # 1을 더해준다
scores[j] += s # 현재 점수를 배열에 저장한다
elif r =="X":
s=0 # 틀린 문제이기에 0점이다
scores[j]+=s # 그 값을 배열에 저장한다.
j+=1 # 다음 문제의 답을 가져오기 위해 인덱스 값을 하나 더해준다
results[i]+=sum(scores) # 스코어에 저장된 값을 저장해 results에 더해준다
for i in range(n): # for문으로 results 값을 출력
print(results[i])
두 가지의 배열을 쓰면서 다소 풀이가 어렵게 느껴질 수도 있겠지만
문제에 대한 이해를 확실히 한 다음에 코드 작성을 시작하면 비교적 쉽게 할 수 있을 거라고 생각합니다.
[백준/Python] 5789 : 한다 안한다 (0) | 2021.06.28 |
---|---|
[백준/Python] 2884 : 알람 시계 (0) | 2021.06.27 |
[백준/Python] 1316 : 그룹 단어 체커 (0) | 2021.06.21 |
[백준/Python] 10174 : 팰린드롬 (0) | 2021.06.17 |
[백준/Python] 5524 : 입실 관리 (0) | 2021.06.16 |
댓글 영역