본문 바로가기
알고리즘/[백준] Python

[백준] 8958번 OX퀴즈

by 코딩맛집 2023. 1. 28.

💡 문제

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 

💡 정답

n = int(input())

for _ in range(n):
    s = input()
    result = 0
    final = 0
    for i in s:
        if i == "O" : 
            result += 1       #1번
            final += result   #2번
        else:
            result = 0
        
    print(final)

 

💡 풀이

s를 n번 입력하기 위해 for문 안에 넣어주고,  result와 final을 0으로 정의해준다.

result와 final을 for문 안에 대입한 이유는 안쪽 for문이 끝나고 final이 print되면 0으로 다시 초기화 해주어야 되기 때문이다.

result를 이중 for문 밖으로 두어도 파이참에서는 올바르게 돌아가지만 백준에서는 틀렸다고 나온다. 이유는 모르겠다.

아시는 분은 댓글 달아주세요.

 

이어서 '00x'를 대입한다면,

 

 첫 번째 '0'이  1번 result에 1 = result(0) +1로 1이 된다.

result 1값이 final로 대입된다.

 

두 번째도 '0'이 나오면 2 = result(1) + 1로 2가 된다.

final(3) = final(1) + result(2)으로 final은 3이 된다.

 

세 번째에 'x'가 나오면 result에 0이 대입되고 안쪽 for문이 끝나고 final이 print된다.

s에 새로운 값이 대입되고 result와 final은 0으로 초기화되고 n만큼 위의 과정이 반복된다.

 

'알고리즘 > [백준] Python' 카테고리의 다른 글

[백준] 25206 너의 평점은  (0) 2023.03.16
[백준] 3052번 나머지  (0) 2023.02.01
[백준] 15649 N과 M(1)  (0) 2023.01.24
[백준] 10866 덱  (0) 2022.10.04