coding test

[파이썬] 8958. OX퀴즈

잔망루피 2021. 4. 28. 13:29

문제

"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

 

예제 출력

10

9

7

55

30

 

 

🙋‍♀️ 나의 풀이

 

N=int(input())    # 테케 수

for i in range(N) :
    OX=input()    # 문자열
    ans=0
    cnt=0
    for j in OX :
        if j == "O" :
            cnt+=1
            ans+=cnt
        else :
            cnt=0
    print(ans)

 

문자열 OX를 반복하면서 "O"를 찾으면 cnt를 늘려가며 ans에 누적한다.

X가 하나라도 나오면 cnt를 0으로 다시 초기화한다.

 

 

🏃‍♀️ 다른 사람 풀이

 

import sys
N = int(sys.stdin.readline())
for i in range(N):
    quiz_result = sys.stdin.readline()
    accum = 1
    score = 0
    for q in quiz_result:
        if q == 'O':
            score += accum
            accum += 1
        else:
            accum = 1
    print(score)

 

sys.stdin.readline()은 input()이랑 같은 기능이지만 조금 차이가 있다.

sys.stdin.readline()가 input()보다 빠르다.

백준에서 문제 풀 때 sys.stdin.readline()를 자주 사용해야겠다.

 

 

 

문제 출처 💁‍♀️ 백준

반응형

'coding test' 카테고리의 다른 글

[파이썬] 10809. 알파벳 찾기  (0) 2021.04.28
[파이썬] 1152. 단어의 개수  (0) 2021.04.28
[파이썬] 음양 더하기  (0) 2021.04.27
[파이썬, Java] 신규 아이디 추천  (0) 2021.04.26
[파이썬, Java] 위장  (0) 2021.04.23