본문 바로가기
알고리즘/백준 - 파이썬

백준) 8958번 OX퀴즈 문제 (파이썬)

by AI Sonny 2022. 5. 30.
728x90

문제) "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다.

          문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다.

          예를 들어, 10번 문제의 점수는 3이 된다.

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

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

a = int(input())
X = []

for i in range(a):
    X.append(str(input()))
    for j in X:
        add = 1
        point = 1
        score = 0
        for z in j:
            if z == 'O':
              score += add
              point += 1
              add = point
            else:
              point = 1
              add = 1
    print(score)

 

이번 문제는 이해하는데 조금 어려웠다. 일단 변수 a와 list X를 선언하였다.

 

a는 몇 번의 케이스를 입력할 지에 대해 나타내는 것이고, X는 저장하기 위한 공간이다.

 

for 문을 통해 입력된 a만큼 반복한다. 그리고 입력된 X를 문자열로 저장한다.

 

그 후 for 문을 한번 더 사용하였고, add와 point를 증감을 위해 1로 선언하였다.

 

그리고 score는 초기화를 위해 0으로 선언하였다.

 

그래서 만약 z가 o이면 point는 1씩 증감한다. 그리고 add는 point를 같게 선언하고,

 

score += add를 통해 score의 값을 도출해낸다.

 

else는 o가 동일하게 나오지 않으면 point와 add를 1로 출력시킨다.

 

이 문제는 for 문에 대한 이해도가 많이 필요한 것 같고, 나는 아직 많이 부족한 것 같다.

 

이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!

728x90

댓글