BOJ

[백준][python] 8985 OX퀴즈

winter17 2023. 2. 4. 20:05

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

 

8958번: OX퀴즈

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

www.acmicpc.net

풀이 과정

1. 입력 값을 받을 때 리스트로 받아주고 ( 하나하나 다 쪼개서 for loop 돌릴 거라)

2. 입력받은 ox 리스트를 for loop 돌려서 나오는 값(i)을 조건문으로 분류

3. i가 'O'이라면 cnt변수에 1을 더해주고

4. score라는 빈 리스트에 append

     왜? 'X'가 나오면 값을 초기화시켜야 하는데 cnt = 0으로 초기화만 시키면 이전에 누적해서 더한 값이 없어지니까

           cnt값을 그때그때 빈 리스트에 append 하면 'X'가 나와서 cnt값을 초기화시키더라도 이전 값이 score 리스트에 남아있음!

5. i가 'X'라면 cnt를 0으로 초기화

6. 여기까지 했을 때 score를 출력해 보면 'X'로 인해 초기화된 후 누적된 값만 append 되어있는데 

7. 문제에서 합을 출력하라고 했으니까 sum함수로 출력하면 된다!

for i in range(int(input())):
    ox = list(input())

    score = []
    cnt = 0
    for i in ox:
        if i == 'O':
            cnt += 1
            score.append(cnt)
        else:
            cnt = 0
    print(sum(score))

리뷰

처음 수업 때 이 문제를 봤을 때는 값을 초기화시키면 이전의 값들을 어떻게 저장해야 할지 전혀 알지 못했는데

시간이 지나고 다시 풀어보니까 빈 리스트를 score라는 변수로 생성해 두면 되는 문제였다