본문 바로가기
IT/알고리즘

[BAEKJOON] 백준 8958번: OX 퀴즈 (Python)

by 무녈 2021. 8. 12.

문제 링크: https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net


문제

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

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.


코드

num = int(input())

for i in range(num):
    OX = input()
    score = 0
    sumScore = 0
    for j in OX:
        if j == "O":
            score += 1
        else:
            score = 0
        sumScore += score
    print(sumScore)

코드 설명

  1. 사용된 변수
    num: 입력받을 테스트 케이스의 개수 / OX: 입력받은 테스트 케이스 / score: O의 개수에 따른 점수 /  sumScore: score의 합
  2. 이중 반복문 사용
  3. 이중 반복문을 통해 배열의 원소에 "O"가 존재할 경우 1을, 연속된 score가 있을 경우 score의 값을 1씩 증가 시킴
    else를 통해 연속된 "O"가 없을 경우 score의 값을 0으로 변경
  4. sumScore를 통해 score의 총 합을 구함.
  5. 각 테스트 케이스의 sumScore를 출력
반응형

댓글