백준 8958번 풀이

문제

연속으로 맞추면 가산점이 붙는 OX퀴즈 채점하기. 예를 들어서 OOOXOXOX면 1+2+3+0+1+0+1+0, 합이 8점이다.

풀이

import sys
a=int(sys.stdin.readline())
for i in range(a):
    print(i)

입력단은 쉽다. 역시나 sys.stdin.readline() 나왔고요…

import sys
a=int(sys.stdin.readline())
for i in range(a):
    str=sys.stdin.readline()
		# 이 부분에서 점수 처리가 이루어져야 한다
    print(str)

기본적으로 변수 생성은 str 밑에서 진행할거고, 점수 처리는 str 안쪽에서 일어난다. (여기서 안쪽=안쪽으로 들여쓰기)

import sys
a = int(sys.stdin.readline())
for i in range(a):
    str = sys.stdin.readline().strip()
    score = 0
    for j in range(len(str)):
        if str[j] == "O":
            score=score+1
        else:
            pass
    print(score)

이 코드는 아직 가산점 매기는 기능이 없으므로 이대로 내면 틀린다. pass는 if문에 있는 조건이 안 맞으면 넘어가라는 얘기. 해당 if문에서는 문자열이 O이면 점수를 하나 더하게 된다.

import sys
a = int(sys.stdin.readline())
for i in range(a):
    str = sys.stdin.readline().strip()
    score = 0
    sum = 0
    for j in range(len(str)):
        if str[j] == "O":
            score = score+1
            sum = sum + score
        else:
            score = 0
            sum = sum + score
    print(sum)

sum이 점수의 총합이고, score는 O가 있으면 추가되는 점수. 즉 여기서 가산점을 매긴다. else의 경우 pass했더니 로직이 개판이 되어서 0을 더하는걸로 했다.