BOJ_8958 OX퀴즈
- TOC {:toc}
이 글은 백준 온라인 저지의 8958번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.03.26
메모리 | 시간 | 코드 길이 |
---|---|---|
28776 KB | 84 ms | 203 B |
n = int(input())
for _ in range(n):
s = input()
# 총 스코어
sc = 0
# 연속된 횟수
now = 0
for i in s:
# "O"일 때마다
if i == "O":
# now를 증가시킨 뒤
now += 1
# sc에 더한다.
sc += now
# "O"가 끊어지면
else:
# now를 0으로 초기화한다.
now = 0
print(sc)
아이디어 & 풀이
연속된 횟수를 세는 변수와 총 스코어를 저장하는 변수를 따로 생성한 뒤
- O가 나오면 연속된 횟수를 1 증가시킨 뒤 이를 스코어에 더하는 과정을 반복한다.
- X가 나오면 연속된 횟수를 초기화한다.
참고 답안
import sys
n = int(input())
for i in range(n):
ans = sys.stdin.readline().rstrip()
res = 0
# X로 split한 각 원소에 대해서
for j in ans.split("X"):
# 연속될 때마다 1씩 증가하면서 더하기 때문에
# O가 n개 있다면 점수는 1 + ... + n = n * (n + 1) / 2
k = j.count("O")
res += k * (k + 1) / 2
print(int(res))
-
ps-python