알고리즘 테스트/백준 문제풀이 및 해설
<백준 문제풀이: 8958번> 파이썬 - OX퀴즈
개발린이
2020. 11. 6. 16:58
개인적으로 굉장히 어려웠던 문제이다. 어떻게 점수 누적되는 것을 구현하고, '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를 초기화 시켜주는 작업을 했다.
나한테는 상당히 오랜 시간이 걸린 문제이고, 조금 색다른 방법을 요구했던 문제인 것 같다.