본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 8958번(파이썬)

by 올커 2022. 10. 1.

 

백준 8958번_파이썬 알고리즘

Q. 백준 8958. OX 퀴즈

OX퀴즈의 결과를 "OOXXOXXOOO"와 같이 표현하는 게임이 있다. 문제를 맞았을 때는 'O', 문제를 틀렸을 때에는 X가 기록된다. 정답을 맞췄을 때의 점수는 해당 문제까지 연속된 O의 개수가 점수로 합산된다. 예를 들어, "OOXXOXXOOO"가 퀴즈의 결과일 경우 10번 문제의 점수는 3이 되고 최종 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과를 입력받아 최종 점수를 구하는 프로그램을 작성한다.
(1) 입력 : 첫째 줄에 테스트 케이스의 개수를 입력받는다. 이후 각 테스트 케이스는 한 줄로 입력받으며, 길이가 0보다 크고 80보다 작은 'O'와 'X'만으로 이루어진 문자열을 테스트 케이스 수만큼 입력받는다.
(2) 출력 - 각 테스트 케이스의 점수를 출력한다.


A. 풀이

# Q 백준 8958. OX퀴즈
# 반복횟수 입력 받기
n = int(input())

# 합산할 리스트 선언
score = []

# 반복횟수 n에 따라 for문 반복
for i in range(n):
	ox = input()        # 문자열 입력 받기
	for i in range(len(ox)):
		if (i == 0)&(ox[i] == "O"):     # 문자열 최초값이 "O"일 경우
			score.append(1)             # score 리스트에 값 1 추가
		elif (ox[i] == "O")&(ox[i-1] != "O"):       # "X"값 이후 "O"값이 나온 경우
			score.append(1)
		elif (ox[i] == "O")&(ox[i-1] == "O"):       # "O"값 이후 "O"값이 나온 경우
			score.append(score[i-1]+1)
		else:
			score.append(0)                         # "X"값이 나온 경우
	print(sum(score))           # 출력
	score = []              # 스코어 초기화
반응형

댓글