문제링크: 백준 8958번(OX퀴즈)
import sys
n = int(input())
l = list(sys.stdin.readline().rstrip() for _ in range(n))
for i in l:
sum = 0
score = 0
for j in i:
if j == 'O':
sum += 1
score += sum
else:
sum = 0
print(score)
먼저 테스트 케이스의 개수를 입력받고, 그 수 만큼 for문을 돌려 값을 입력받아 list로 변환해서 저장했다.
input() 대신 sys.stdin.readline()을 사용해서 입력 마지막에 개행문자 '\n'이 들어가는 것을 지워주기 위해 rstrip()을 붙여주었다.
이후 이중 for문으로 리스트의 각 요소를 'O'와 비교하여 개수를 세어 점수에 더해주는 식으로 구해 출력했다.
테스트 케이스만큼 for문을 돌려 문자열을 리스트로 입력받고, 다시 이중 for문을 돌려 결과를 출력하는 과정이 불필요하다고 생각, for문 사용을 줄여야 할 필요를 느낌
import sys
n = int(input())
for _ in range(n):
result = sys.stdin.readline().rstrip()
sum = 0
score = 0
for i in result:
if i == 'O':
sum += 1
score += sum
else:
sum = 0
print(score)
마찬가지로 먼저 테스트 케이스의 개수를 입력받았지만, 이전과 달리 문자열을 하나씩 입력받는 방식으로 하나의 for문과 리스트의 사용을 없앴다.
동시에 이중 for문으로 문자를 'O'와 비교해 개수를 세어 점수에 더해 출력했다.