본문 바로가기
Develop/백준 (python)

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

by Tarra 2022. 1. 9.

8958번: OX퀴즈


문제)

"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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def sum_count(a): #1부터 a까지의 합을 구하는 함수 세팅
    b = 0
    for i in range(1, a+1):
        b += i
    return b
 
num = int(input())  #몇번 반복할 것인지 입력받기
 
for i in range(0, num):
    answer = str(input())
    answer = answer.split("X")  #X를 기준으로 입력값을 분해하여 리스트에 추가
 
    temp = []
    for i in answer:
        temp.append(i.count("O"))
    answer = temp
    answer = list(map(int, answer))  #O의 개수를 센 list
 
    temp = []
    for i in answer:
        temp.append(sum_count(i))  #리스트의 값들을 위의 함수를 실행
 
    total = 0
    for i in temp:
        total += i
    print(total)
cs

 

이 문제가 최근에 한 알고리즘 문제중에 제일 힘들지 않았나 싶다.

python을 아직 잘 알지 못해 def를 이용해 원하는 함수를 먼저 세팅하는걸 생각하지 못했고,그나마 좀 잘한건 X를 기준으로 O들을 나누는 것 정도..? 그래도 풀어서 다행이라고 생각한다.

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

 

8958번: OX퀴즈

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

www.acmicpc.net