https://www.acmicpc.net/problem/8958
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)
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1065번 한수(with python) (0) | 2023.01.19 |
---|---|
[백준] 4344번 평균은 넘겠지(with python) (0) | 2023.01.18 |
[백준] 3052번 나머지(with python) (0) | 2023.01.18 |
[백준] 5597번 과제 안 내신 분..?(with python) (0) | 2023.01.18 |
[백준] 1110번 더하기 사이클(with python) (0) | 2023.01.17 |
댓글