CodingTest

백준 8958_OX퀴즈 - python

너굴먹 2024. 3. 12. 00:45

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

 

8958번: OX퀴즈

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

www.acmicpc.net


Code - python 3

max_num = int(input())
n = 0
while n < max_num:
    result, grade = 0, 0
    score_list = list(input())
    for i in score_list:  # ['O', 'X', 'X', 'O', ...]
        if i == 'O':
            grade += 1
            result += grade
        else:
            grade = 0
    print(result)
    n += 1

문제 설명

 사용자가 O, X가 포함된 문자열을 입력했을경우, 입력된 문자열이 O인 경우의 총합을 구하는 문제다,

 여기서 포인트는 O가 연달아서 나오는 경우에는 추가점수가 1점씩 부여된다는 점이다.

 

 사용자가 XOOOXX 를 입력했다면 0+1+2+3+0+0'으로 총 6점이다


코드 풀이

score_list = list(input())
    for i in score_list:  # ['O', 'X', 'X', 'O', ...]
        if i == 'O':
            grade += 1 
            result += grade
        else:
            grade = 0
    print(result)

 

'O,X...' 가 포함된 문자열을 입력한 배열을 score_list로 선언 후, for문으로 score_list의 요소에 접근한다.

 첫번째부터 for 루프를 돌며, 입력된 문자가 'O' 이면 grade 변수에 1을 더해두고 result에 저장한다.

 

 이렇게 되면 연속되어 'O' 가 나오는 경우, grade 변수값이 1,2,3, ...  늘어나며 result에 누적되어 저장되기 때문에

 마지막엔 result값만 출력해주면 된다


grade, result  = 0, 0

 

result 값을 출력하고, 다음 score_list 의 요소로 넘어갈때 누적되어 사용한 grade, result 변수를 초기화 해주는걸 잊지말자