Problem:


 JOIとIOI 

問題

与えられた文字列内の連続する3文字が，JOIまたはIOIという並びになっている個所がそれぞれ何個所あるのかを数え上げるプログラムを作成せよ．文字列はアルファベットの大文字だけからなる．例えば下図の「JOIOIOI」という文字列にはJOIが1個所，IOIが2個所に含まれている．

入力

入力は複数のデータセットからなる．各データセットは1行であり，10000文字以下のアルファベットの大文字からなる．入力は EOF で終了する.

データセットの数は 5 を超えない．

出力

データセットごとに,  1行目に見つかったJOIの個数，2行目に見つかったIOIの個数をそれぞれ出力せよ．

入出力例

入力例

JOIJOI
JOIOIOIOI
JOIOIJOINXNXJIOIOIOJ

出力例

2
0
1
3
2
3

上記問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。



Sample input:
JOIJOI
JOIOIOIOI
JOIOIJOINXNXJIOIOIOJ


Sample output:
2
0
1
3
2
3

Submission status: Accepted

Solution code:

for i in range(5):

    num = 0
    num2 = 0

    s = input()
    S = list(s)

    for i in range(len(S)-2):

        if S[i] == "J" and S[i+1] == "O" and S[i+2] == "I":
            num += 1
        if S[i] == "I" and S[i+1] == "O" and S[i+2] == "I":
            num2 += 1

    print (num)
    print (num2)

Submission status: Accepted

Solution code:
import sys

def main():
    pat1 = 'JOI'
    pat2 = 'IOI'
    lines = sys.stdin.readlines()
    for s in lines:
        l = len(s)
        if l == 1 or l == 2:
            print(0)
            print(0)
            continue

        cnt1 = 0
        cnt2 = 0
        i = 0
        j = 0
        while i < l - 2:
            k = 0
            while True:
                if k >= 3 or s[k + i] != pat1[k]:
                    break
                k += 1
            if k == 3:
                cnt1 += 1
                i += 3
            else:
                i += 1
        while j < l - 2:
            k = 0
            while True:
                if k >= 3 or s[k + j] != pat2[k]:
                    break
                k += 1
            if k == 3:
                cnt2 += 1
                j += 2
            else:
                j += 1

        print(cnt1)
        print(cnt2)


if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
while 1:
    try:
        s=input()
        joi=0
        ioi=0
        for i in range(len(s)-2):
            oi=s[i]+s[i+1]+s[i+2]
            if oi=="JOI":joi+=1
            elif oi =="IOI":ioi+=1
        print(joi)
        print(ioi)
    except:break

Submission status: Accepted

Solution code:
while 1:
    try:
        s = list(input())
    except EOFError:
        break

    joi = ["J", "O", "I"]
    ioi = ["I", "O", "I"]
    cnt_j = 0
    cnt_i = 0
    for i in range(len(s) - 2):
        if [s[i], s[i+1], s[i+2]] == joi:
            cnt_j += 1
        elif [s[i], s[i+1], s[i+2]] == ioi:
            cnt_i += 1

    print(cnt_j)
    print(cnt_i)

Submission status: Accepted

Solution code:
while True:
    try:
        lst = list(raw_input())
        joi = 0
        ioi = 0
        for i in range(len(lst)-2):
            if lst[i+1] == 'O' and lst[i+2] == 'I':
                if lst[i] == 'J':
                    joi += 1
                if lst[i] == 'I':
                    ioi += 1
        print joi
        print ioi
    except EOFError:
        break

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

while True:
    s = input('')
    if s == '':
        break
    cut_ss = [s[i:i+3] for i in range(len(s[:-2]))]

    n_joi = 0
    n_ioi = 0
    for cut_s in cut_ss:
        if cut_s == 'JOI':
            n_joi += 1
        if cut_s == 'IOI':
            n_ioi += 1

    print(n_joi)
    print(n_ioi)

Submission status: Runtime Error

Solution code:
while True:
    s = input()
    if s == "":
        break
    joi = 0
    ioi = 0
    for i in range(len(s) - 2):
        x = s[i] + s[i + 1] + s[i + 2]
        if (x == "JOI"):
            joi += 1
        elif (x == "IOI"):
            ioi += 1
    print(joi)
    print(ioi)

Submission status: Runtime Error

Solution code:
while True:
    s = input()
    if s == "":
        break
    joi = 0
    ioi = 0
    s_list = [s[i:i+3] for i in range(len(s) - 2)]
    for i in s_list:
        if i == "JOI":
            joi += 1
        if i == "IOI":
            ioi += 1
    print(joi)
    print(ioi)