상세 컨텐츠

본문 제목

[백준/Python] 8985 : OX퀴즈

코딩테스트/백준

by 기며니 2021. 6. 22. 21:34

본문

728x90
728x90

💚 문제 설명

"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

출력 1

10
9
7
55
30

 

💡 내 코드

n = int(input()) # 테스트 개수 입력받기
results= [0]*n  # 결과 값을 저장할 0으로 이루어진 results 생성
for i in range(n):
  s=0 # 연속되는 점수를 저장할 S
  j=0 # 인덱스 값을 저장할 j
  ox_result = input() # 테스트 케이스를 입력받는다
  scores = [0]*len(ox_result) # 테스트 길이만큼 점수를 저장할 scores 생성
  for r in ox_result: # 문제의 답을 하나씩 가져온다
    if r == "O": # "O"라면
      s+=1 # 1을 더해준다
      scores[j] += s # 현재 점수를 배열에 저장한다
    elif r =="X":
      s=0 # 틀린 문제이기에 0점이다 
      scores[j]+=s # 그 값을 배열에 저장한다.
    j+=1 # 다음 문제의 답을 가져오기 위해 인덱스 값을 하나 더해준다
  results[i]+=sum(scores) # 스코어에 저장된 값을 저장해 results에 더해준다
    
for i in range(n): # for문으로 results 값을 출력
  print(results[i]) 

 

🙌 후기

두 가지의 배열을 쓰면서 다소 풀이가 어렵게 느껴질 수도 있겠지만

문제에 대한 이해를 확실히 한 다음에 코드 작성을 시작하면 비교적 쉽게 할 수 있을 거라고 생각합니다.

728x90
728x90

관련글 더보기

댓글 영역