본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 8958 : OX퀴즈 (Python / 파이썬)

by 함께 공부해요 2020. 9. 19.


OX퀴즈 성공출처다국어분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

128 MB

59823

30573

26443

52.639%

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만으로 이루어져 있다.

출력

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

알고리즘 분류

구현

문자열


백준 알고리즘 # 8958번 : OX퀴즈

t = int(input())

for _ in range(t):
    ox = input()
    score = 0
    cnt = 0
    for i in range(len(ox)):
        if ox[i] == "O":
            cnt += 1
            score += cnt
        elif ox[i] == "X":
            cnt = 0
    print(score)

풀이

변수 t를 설정해서 테스트 케이스를 입력받고

for문으로 테스트 케이스의 수만큼 반복을 해준다.

for문 안에서 변수 ox를 설정해서 OX를 입력받고

최종 출력될 score 변수와 테스트 케이스 마다 O의 수를 count할 변수를 만들어서 0으로 초기화 시켜놓는다.

그리고 다시 for문을 만들어서 ox에 입력받은 수만큼 반복을 해주며

if문으로 만약 ox(문자열 기본적으로 리스트) 리스트에 "O"가 있다면

cnt를 1 더해주고 score에 cnt만큼을 더해줘서 누적시킨다.

그리고 "X"일 경우에는 (elif or else) cnt를 다시 0으로 초기화시켜줘서

그 다음 "O"를 맞이할 때 다시 1부터 cnt를 셀 수 있도록 한다.

이렇게 해서 cnt가 누적된 score를 출력해주면 문제 풀이 끝!😊

자세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏

 

wook2124/Algorithm

Practice algorithm. Contribute to wook2124/Algorithm development by creating an account on GitHub.

github.com

최종 소스코드

댓글