198832025-12-28 22:07:49kissmikkiDNS szakaszok száma (75 pont)python3Hibás válasz 18/7561ms8828 KiB
import sys;

def szamol(DNS):
    hossz=len(DNS)
    # A-k száma balról jobbra
    db=0
    A=[0]*hossz
    for i in range(0, hossz):
        if DNS[i] == 'A':
            db=db+1
        A[i]=db
    # T-k száma jobbról balra
    db=0
    T=[0]*hossz
    for i in range(hossz-1, -1, -1):
        if DNS[i] == 'T':
            db=db+1
        T[i]=db
    # megelőző G-k száma balról jobbra
    db=0
    G=[0]*hossz
    for i in range(0, hossz):
        G[i]=db
        if DNS[i] == 'G':
            db=db+1
    # összesítés
    db=0
    a=-1
    t=-1
    for i in range(0, hossz):
        if DNS[i]=='G' and (a != A[i] or t != T[i]):
            db = db+(A[i]-G[i])*T[i]
            a,t = A[i], T[i]
    print(db)
    return db

def test():
    db=szamol("CAGTAATTGATA")
    assert 6==db

    db=szamol("AGT")
    assert 1==db

    db=szamol("AGTAGT")
    assert 3==db

    db=szamol("ATATATG")
    assert 0==db

    db=szamol("AGTAGTAGTAGTAGT")
    assert 15==db

    DNS="A"
    for i in range(0,33333):
        DNS=DNS+"AGT"
    db=szamol(DNS)
    assert 1111122222==db

def futtat():
    hossz=int(input())
    DNS=input()
    szamol(DNS)

#test()
futtat()
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/75
1Elfogadva0/016ms3324 KiB
2Hibás válasz0/061ms7876 KiB
3Elfogadva3/317ms3124 KiB
4Elfogadva4/417ms3172 KiB
5Elfogadva4/416ms3124 KiB
6Elfogadva4/416ms3124 KiB
7Hibás válasz0/414ms3128 KiB
8Hibás válasz0/317ms3128 KiB
9Hibás válasz0/317ms3112 KiB
10Hibás válasz0/417ms3140 KiB
11Hibás válasz0/417ms3116 KiB
12Hibás válasz0/417ms3124 KiB
13Hibás válasz0/417ms3120 KiB
14Hibás válasz0/417ms3224 KiB
15Hibás válasz0/359ms7732 KiB
16Hibás válasz0/454ms8244 KiB
17Hibás válasz0/459ms8500 KiB
18Hibás válasz0/457ms8244 KiB
19Hibás válasz0/457ms8712 KiB
20Hibás válasz0/457ms8828 KiB
21Elfogadva3/356ms8684 KiB
22Hibás válasz0/454ms8760 KiB