본문 바로가기
BOJ/[BOJ] Python

백준 8958번 풀이

by Lv. 35 라이츄 2022. 8. 18.

문제

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

 

8958번: OX퀴즈

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

www.acmicpc.net

연속으로 맞추면 가산점이 붙는 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을 더하는걸로 했다.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 15596번 풀이  (0) 2022.08.18
백준 4344번 풀이  (0) 2022.08.18
백준 1546번 풀이  (0) 2022.08.18
백준 3052번 풀이  (0) 2022.08.18
백준 2577번 풀이  (0) 2022.08.18

최근댓글

최근글

skin by © 2024 ttutta