문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
예제 입력1
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
예제 출력
10
9
7
55
30
🙋♀️ 나의 풀이
N=int(input()) # 테케 수
for i in range(N) :
OX=input() # 문자열
ans=0
cnt=0
for j in OX :
if j == "O" :
cnt+=1
ans+=cnt
else :
cnt=0
print(ans)
문자열 OX를 반복하면서 "O"를 찾으면 cnt를 늘려가며 ans에 누적한다.
X가 하나라도 나오면 cnt를 0으로 다시 초기화한다.
🏃♀️ 다른 사람 풀이
import sys
N = int(sys.stdin.readline())
for i in range(N):
quiz_result = sys.stdin.readline()
accum = 1
score = 0
for q in quiz_result:
if q == 'O':
score += accum
accum += 1
else:
accum = 1
print(score)
sys.stdin.readline()은 input()이랑 같은 기능이지만 조금 차이가 있다.
sys.stdin.readline()가 input()보다 빠르다.
백준에서 문제 풀 때 sys.stdin.readline()를 자주 사용해야겠다.
문제 출처 💁♀️ 백준
반응형
'coding test' 카테고리의 다른 글
[파이썬] 10809. 알파벳 찾기 (0) | 2021.04.28 |
---|---|
[파이썬] 1152. 단어의 개수 (0) | 2021.04.28 |
[파이썬] 음양 더하기 (0) | 2021.04.27 |
[파이썬, Java] 신규 아이디 추천 (0) | 2021.04.26 |
[파이썬, Java] 위장 (0) | 2021.04.23 |