【TypeScript】AtCoder abc122_c

atcoder.jp

テストコード

Jest使用。

import { main } from './main'

describe('tests', () => {
  it('1', () => {
    expect(main(8, 3, 'ACACTACG', [[3, 7], [2, 3], [1, 8]])).toEqual([2, 0, 3])
  })
})

提出コード (AC)

トランスパイルして提出。

export const main = (
  N: number,
  _Q: number,
  S: string,
  lrList: Array<Array<number>>
): Array<number> => {
  const splitted = S.split('')

  const sList = [0]
  for (let i = 0; i < N; i++) {
    if (splitted[i] === 'A' && splitted[i + 1] === 'C') {
      sList.push(sList[i] + 1)
    } else {
      sList.push(sList[i])
    }
  }

  const res = lrList.map(lr => {
    const l = lr[0] - 1
    const r = lr[1] - 1

    return sList[r] - sList[l]
  })
  return res
}

const input: string = require('fs').readFileSync('/dev/stdin', 'UTF-8')
const lines = input.split('\n')

const NQ = lines[0].split(' ')
const N = Number(NQ[0])
const Q = Number(NQ[1])
const S = lines[1]

const lrList: Array<Array<number>> = []
for (let i = 0; i < Q; i++) {
  lrList.push(lines[2 + i].split(' ').map(l => Number(l)))
}

const res = main(N, Q, S, lrList)
res.forEach(r => console.log(r))