조금씩 꾸준히 완성을 향해

[Algorithm] 백준 8958 OX퀴즈 with Python 본문

DataStructure & Algorithm/문제풀이

[Algorithm] 백준 8958 OX퀴즈 with Python

all_sound 2022. 9. 22. 21:06

문제

"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

 

내가 짠 코드

t = int(input())
for _ in range(t):
    quiz = input()
    res = 0
    cnt = 0
    for x in quiz:
        if x == 'O':
            cnt += 1
        else:
            cnt = 0
        res += cnt
    print(res)

 

지난 번에 연습해 봤던 문제가 구현이 거의 비슷해 큰 어려움 없이 풀 수 있었다.

변수 값을 0으로 초기화 할 때 어디 위치에 넣어야 하는지 아직은 바로바로 떠오르지 않는다. 

머리로 과정을 돌려보고 한참 생각하면 그래도 구현이 가능하지만, 사고의 속도가 좀 더 빨리지면 좋겠다. 

 

 

 

얼마 전에 포스팅한 거의 비슷한 문제 첨부!

https://allsound.tistory.com/38?category=1029640 

 

[Algorithm] 기초 문제 / 점수 계산

▶ 문제 OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을

allsound.tistory.com

 

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net