T = int(input())
for _ in range(1, T+1):
string = input()
stack = []
score = 0 # 점수 기록
for ch in string: # OX 결과를 확인하는데
if ch == 'O': # O면 push하고
stack.append(ch)
score += len(stack) # 스택 길이(O의 개수)만큼 점수 추가
else: # X면 스택 비우고 다음 확인
stack.clear()
print(score)
내 코드는 메모리 32412KB, 시간 40ms였는데 다른 파이썬 코드들은 31120KB, 시간 32ms여서 확인해 봤다.
T = int(input())
for _ in range(T):
string = input()
score = 0
combo = 0 # 누적된 O의 개수를 저장하는 변수
for ch in string:
if ch == 'O':
combo += 1 # O이면 콤보 추가
score += combo
else:
combo = 0 # X가 나오면 다시 0으로 초기화
print(score)
이렇게 누적 개수를 세는 변수를 사용하면, 리스트 연산을 하지 않아도 돼서 메모리를 덜 사용하고 시간이 빠르다.