본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 8958번 OX퀴즈(with python)

by 윤무무 2023. 1. 18.

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net

 

1. 내가 작성한 코드
n = int(input())

for _ in range(n):
  arr = list(input()) 
  b = []
  sum = 0
  for i in range(len(arr)):
    if i == 0:
      if arr[i] == 'O':
        b.append(1)
        sum = sum+1
      else :
        b.append(0)
    else :
      if arr[i] == 'O':
        b.append(b[i-1]+1)
        sum = sum + b[i]
      else:
        b.append(0)
  print(sum)

if문을 이중으로 사용하여 해결했다. 

1) i가 0인 경우(배열의 첫 번째 인덱스 값)

    - O => 1

    - X => 0

2) i가 1이 아닌 경우(배열의 두 번째 인덱스 이상 값)

   - O => 1

    - X => 0

 

짧은 코드를 작성한 답안을 보니, score라는 변수를 새로 선언하여 score+=1 이나 sorce = 0으로 구분하면 금방 풀리는 문제였다.

 

2. 모범답안
n = int(input())

for _ in range(n):
  ox_list = list(input())
  score = 0
  sum_score = 0
  for ox in ox_list:
    if ox == 'O':
      score+=1
      sum_score += score
    else:
      score=0
      
  print(sum_score)

댓글