Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [8958] - OX퀴즈

yaebb_82 2022. 8. 9.

 

 

 

문제

 

 

 

작성한 코드

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

댓글