백준 [8958] - OX퀴즈
문제
작성한 코드
import sys
input = sys.stdin.readline
T = int(input())
for i in range(T):
success = 0
grades = 0
case = list(input().rstrip())
for i in range(len(case)):
if case[i] == 'O':
success += 1
grades = grades + success
else:
success = 0
print(grades)
- sys.stdin.readline을 input에 할당하여 사용하였다.
- input()으로 문자를 입력받고, int형으로 형변환하여 T에 저장한다. (T는 테스트케이스 개수)
- for i in range(T): 테스트케이스 개수 만큼 반복문 for문을 돌려서 OX문제의 결과를 입력받고, 점수를 각 테스트케이스마다 계산하여 출력하도록 한다.
- 첫 번째 반복문 for문 안에서 성공한 O의 개수(success)와 총 점수(grades)를 0으로 초기화 시켜준다.
(테스트케이스 개수 만큼 반복문을 돌릴 때마다 새롭게 계산해야 하기 때문에)
- case에는 input()으로 입력받은 OX의 결과를 list로 저장한다. (sys.stdin.readline을 사용해서 문자열을 입력받을 때에는 엔터도 포함이 되기 때문에 rstrip()으로 제거해줘야 한다.)
- for i in range(len(case)): 입력받은 OX의 결과의 길이 만큼 반복문 for문을 돌려서 점수를 계산한다.
- 만약 해당 인덱스의 문자가 'O' 라면,
success에 +1을 해주고, (연속된 O의 개수만큼 점수가 증가되기 때문 / OOO -> 1+2+3)
success의 값을 grades에 더해준다.
- 만약 해당 인덱스의 문자가 'X' 라면,
success를 0으로 초기화 시켜준다. (O의 연속이 끊기는 시점에서 0으로 초기화해줘야 한다.)
- 마지막으로는 총 점수인 grades를 print()로 출력해준다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 [15596] - 정수 N개의 합 (0) | 2022.08.10 |
---|---|
백준 [4344] - 평균은 넘겠지 (0) | 2022.08.09 |
백준 [1546] - 평균 (0) | 2022.08.08 |
백준 [3052] - 나머지 (0) | 2022.08.08 |
백준 [2577] - 숫자의 개수 (0) | 2022.08.08 |
댓글