Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[백준-Python] 8958번: OX퀴즈 본문

🥧 Python/⚙️ 코딩테스트

[백준-Python] 8958번: OX퀴즈

썸머몽 2023. 3. 1. 00:54
728x90
 

8958번: OX퀴즈

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

www.acmicpc.net

 

📌 풀이

첫째 줄에 테스트 케이스 수를 받는다. 

그 수 만큼 반복하면서 문자열을 받을 수 있는 변수(ox_list)를 선언한다. (리스트여도, 문자열이어도 상관 없음)

이 문제의 어려운 점은 OXOX 이런 식으로 나오면 2점이지만 OOX 이렇게 나오면 3점으로 계산이 되는,

즉 O가 나오면 점수가 누적되어야 하는 기능이 필요하다는 거였다.

 

OOX를 예로 문제를 풀어보자면, 입력값에서 O가 있으면 score 1점을 추가하고, sum에서 총합을 계산한다.

OO라면 score 1점 / sum 1점 ---> score 2점 / sum 3점 이렇게 계산이 된다.

만약 OXO라면 score 1점 / sum 1점 ---> score 0점 -----> score 1점 / sum 2점 으로 계산이 되는 구조다.

즉 X가 나오면 score는 리셋이 되기 때문에 카운트 되지 않고, sum만 최종적으로 알 수 있게 된다.

 

이런 유형의 문제가 많은데도 매번 볼 때마다 패닉이 된다... ^_ㅠ

 

✅ 코드

test_case = int(input())

for i in range(test_case) :
    ox_list = list(input())
    score = sum = 0 

    for i in ox_list :
        if i == 'O' :
            score += 1
            sum += score
        elif i == 'X' :
            score = 0
    print(sum)
728x90