문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
정답비율
52.355%
N = int(input())
for i in range(N) :
prbm = input()
add = 0
score = 0
for i in range(len(prbm)) :
if prbm[i] == 'O' and prbm[i-1] == 'O' :
add = add + 1
elif prbm[i] == 'O' :
add = 1
else :
add = 0
score = score + add
print(score)
근래 풀었던 문제 중 가장 재밌게 풀었다. 리스트로 분리하거나 하지 않았고 문자열 그대로 풀려고 노력했다. 가장 먼저 입력 받는 숫자만큼 테스트 케이스가 정해지므로 이를 for구문의 range에 넣어주었다.
prbm을 통해 OX의 입력을 받았다. 출력은 각 테스트 케이스마다 점수를 출력하므로 print 구문도 여기서 새로 선언하는 for구문안에 넣었다. 이 for구문은 OX의 갯수 즉 문자열 길이만큼 실행하도록 하였다.
add변수를 통해 앞에서 O가 있으면 가중치를 주도록 하였고, score변수를 통해 add에서 생긴 점수를 더해주며 최종 점수를 얻었다.
if 구문은 3개의 조건이 필요했다. 첫번째는 자신이 O이고 앞선 문자가 O일 경우, 두번째는 자신만 O일 경우이다. 이 때 첫번째 조건에서 앞선문자가 O일 경우를 걸렀으므로 앞선문자가 O가 아니라는 내용은 생략해도 좋다. 마지막은 else를 통해 X는 추가되는 점수가 0임을 선언하였다.
참고
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글
<함수> 15596번 정수 N개의 합 with 파이썬 (0) | 2020.11.04 |
---|---|
<1차원 배열> 4344번 평균은 넘겠지 with 파이썬 (0) | 2020.11.02 |
<1차원 배열> 1546번 평균 with 파이썬 (0) | 2020.10.28 |
<1차원 배열> 3052번 나머지 with 파이썬 (0) | 2020.10.26 |
<1차원 배열> 2577번 숫자의 개수 with 파이썬 (0) | 2020.10.23 |