BOJ
[백준][python] 8985 OX퀴즈
winter17
2023. 2. 4. 20:05
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
풀이 과정
1. 입력 값을 받을 때 리스트로 받아주고 ( 하나하나 다 쪼개서 for loop 돌릴 거라)
2. 입력받은 ox 리스트를 for loop 돌려서 나오는 값(i)을 조건문으로 분류
3. i가 'O'이라면 cnt변수에 1을 더해주고
4. score라는 빈 리스트에 append
왜? 'X'가 나오면 값을 초기화시켜야 하는데 cnt = 0으로 초기화만 시키면 이전에 누적해서 더한 값이 없어지니까
cnt값을 그때그때 빈 리스트에 append 하면 'X'가 나와서 cnt값을 초기화시키더라도 이전 값이 score 리스트에 남아있음!
5. i가 'X'라면 cnt를 0으로 초기화
6. 여기까지 했을 때 score를 출력해 보면 'X'로 인해 초기화된 후 누적된 값만 append 되어있는데
7. 문제에서 합을 출력하라고 했으니까 sum함수로 출력하면 된다!
for i in range(int(input())):
ox = list(input())
score = []
cnt = 0
for i in ox:
if i == 'O':
cnt += 1
score.append(cnt)
else:
cnt = 0
print(sum(score))
리뷰
처음 수업 때 이 문제를 봤을 때는 값을 초기화시키면 이전의 값들을 어떻게 저장해야 할지 전혀 알지 못했는데
시간이 지나고 다시 풀어보니까 빈 리스트를 score라는 변수로 생성해 두면 되는 문제였다