🔅코딩테스트 공부🔅/❗백준
[백준] 8958번 OX퀴즈(with python)
윤무무
2023. 1. 18. 23:09
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
1. 내가 작성한 코드
n = int(input())
for _ in range(n):
arr = list(input())
b = []
sum = 0
for i in range(len(arr)):
if i == 0:
if arr[i] == 'O':
b.append(1)
sum = sum+1
else :
b.append(0)
else :
if arr[i] == 'O':
b.append(b[i-1]+1)
sum = sum + b[i]
else:
b.append(0)
print(sum)
if문을 이중으로 사용하여 해결했다.
1) i가 0인 경우(배열의 첫 번째 인덱스 값)
- O => 1
- X => 0
2) i가 1이 아닌 경우(배열의 두 번째 인덱스 이상 값)
- O => 1
- X => 0
짧은 코드를 작성한 답안을 보니, score라는 변수를 새로 선언하여 score+=1 이나 sorce = 0으로 구분하면 금방 풀리는 문제였다.
2. 모범답안
n = int(input())
for _ in range(n):
ox_list = list(input())
score = 0
sum_score = 0
for ox in ox_list:
if ox == 'O':
score+=1
sum_score += score
else:
score=0
print(sum_score)