개인적으로 굉장히 어려웠던 문제이다. 어떻게 점수 누적되는 것을 구현하고, 'X'가 나왔을 경우에는 이 누적된 점수를 초기화 시킬지에 대한 고민을 많이 했다. 이를 해결하기 위해서는 다음과 같이 했다:
import sys
T = int(sys.stdin.readline())
for i in range(T):
ans_str = sys.stdin.readline()
ans_sum = 0
ans_count = 0
for j in range(len(ans_str)):
if ans_str[j] == 'O':
ans_count += 1
ans_sum += ans_count
elif ans_str[j] == 'X':
ans_count = 0
print(ans_sum)
ans_count 와 ans_sum 이라는 변수 두가지를 두고, 'O'가 나올 경우 ans_count를 1 올려줌과 동시에 이 ans_count를 ans_sum에 더해주는 것이다. 이렇게 하면 이전에 'O'가 나왔어도 누적이 된다.
또한, 만약 'X'가 나왔을 경우 ans_count = 0으로 설정하면서 'X'가 나온 경우에는 ans_count를 초기화 시켜주는 작업을 했다.
나한테는 상당히 오랜 시간이 걸린 문제이고, 조금 색다른 방법을 요구했던 문제인 것 같다.
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 15596번> 파이썬 - 정수 N개의 합 (0) | 2020.11.08 |
---|---|
<백준 문제풀이: 4344번> 파이썬 - 평균은 넘겠지 (0) | 2020.11.07 |
<백준 문제풀이: 1546번> 파이썬 - 평균 (0) | 2020.11.05 |
<백준 문제풀이: 3052번> 파이썬 - 나머지 (0) | 2020.11.05 |
<백준 문제풀이: 2577번> 파이썬 - 숫자의 개수 (0) | 2020.11.04 |