https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
Code - python 3
max_num = int(input())
n = 0
while n < max_num:
result, grade = 0, 0
score_list = list(input())
for i in score_list: # ['O', 'X', 'X', 'O', ...]
if i == 'O':
grade += 1
result += grade
else:
grade = 0
print(result)
n += 1
문제 설명
사용자가 O, X가 포함된 문자열을 입력했을경우, 입력된 문자열이 O인 경우의 총합을 구하는 문제다,
여기서 포인트는 O가 연달아서 나오는 경우에는 추가점수가 1점씩 부여된다는 점이다.
사용자가 XOOOXX 를 입력했다면 0+1+2+3+0+0'으로 총 6점이다
코드 풀이
score_list = list(input())
for i in score_list: # ['O', 'X', 'X', 'O', ...]
if i == 'O':
grade += 1
result += grade
else:
grade = 0
print(result)
'O,X...' 가 포함된 문자열을 입력한 배열을 score_list로 선언 후, for문으로 score_list의 요소에 접근한다.
첫번째부터 for 루프를 돌며, 입력된 문자가 'O' 이면 grade 변수에 1을 더해두고 result에 저장한다.
이렇게 되면 연속되어 'O' 가 나오는 경우, grade 변수값이 1,2,3, ... 늘어나며 result에 누적되어 저장되기 때문에
마지막엔 result값만 출력해주면 된다
grade, result = 0, 0
result 값을 출력하고, 다음 score_list 의 요소로 넘어갈때 누적되어 사용한 grade, result 변수를 초기화 해주는걸 잊지말자