ARC016 B - 音楽ゲーム
備忘録
問題
回答
import sys import os import math import bisect import itertools import collections import heapq import queue import array import time import numpy as np from numpy import linalg as LA # 時々使う # import numpy as np # from decimal import Decimal, ROUND_HALF_UP # from scipy.sparse.csgraph import csgraph_from_dense, floyd_warshall # from collections import defaultdict, deque # 再帰の制限設定 sys.setrecursionlimit(10000000) def ii(): return int(sys.stdin.buffer.readline().rstrip()) def il(): return list(map(int, sys.stdin.buffer.readline().split())) def fl(): return list(map(float, sys.stdin.buffer.readline().split())) def iln(n): return [int(sys.stdin.buffer.readline().rstrip()) for _ in range(n)] def iss(): return sys.stdin.buffer.readline().decode().rstrip() def sl(): return list(map(str, sys.stdin.buffer.readline().decode().split())) def isn(n): return [sys.stdin.buffer.readline().decode().rstrip() for _ in range(n)] def lcm(x, y): return (x * y) // math.gcd(x, y) # MOD = 10 ** 9 + 7 MOD = 998244353 INF = float('inf') def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") N = ii() ret = 0 l = [False] * 9 for i in range(N): S = iss() for j in range(9): if S[j] == 'x': ret += 1 l[j] = False elif S[j] == 'o' and l[j]: continue elif S[j] == 'o': ret += 1 l[j] = True else: l[j] = False print(ret) if __name__ == '__main__': main()
考え方
与えられる譜面は100行程度なので、
計算量はあまり気にせず愚直に指示通りの実装です。
x
は出現するたびに必ずボタンが押されます。
そのため、x
については無条件でボタンを押す数+1
します。
o
は一行前で押されていない場合に限り、ボタンを押す数+1
とします。