본문 바로가기
코딩 어쩌구/코딩테스트

[백준] 8958번 : OX퀴즈

by annmunju 2021. 5. 15.
 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

 

 

방법 1) 이전에 O가 나왔는지 X가 나왔는지 + list에 순서대로 저장해서 나중에 합산해야지

N=int(input())

for i in range(N) :
  x=input()
  n=0
  y=[0 for i in range(len(x))]
  while n!=len(x):
    if x[n] == 'O':
      if n == 0 or x[n-1] == 'X':
        y[n] = 1
      elif x[n-1] == 'O':
        y[n] = y[n-1]+1
    elif x[n] == 'X':
      y[n] = 0
    n+=1
  print(sum(y))

 

방법 2) 지금 O가 나왔는지 X가 나왔는지 > O가 나왔다면 전에 숫자에 누적해서 더하기

N=int(input())

for i in range(N) :
  x=input()
  score_count,score_sum,score_now=0,0,0
  while score_count!=len(x):
    if x[score_count] == 'O':
      score_now+=1
      score_sum+=score_now
    elif x[score_count] == 'X':
      score_now=0
    score_count+=1
  print(score_sum)
728x90