AIZU ONLINE JUDGE: Programming Challenge プログラミング入門 トピック9

AOJの プログラミング入門 トピック9にチャレンジしました。

onlinejudge.u-aizu.ac.jp

 

トピック9 文字列

トピック8は文字についてでしたが、トピック9は文字列の問題が4問です。

トピック9

 

 

9_A:Finding a World

最初に検索するワード、以降に文章が数行続き、ワードがいくつあるかを数え出力する問題です。文章はEND_OF_TEXTの文字で終了となります。

wordという変数に最初の検索するワードを代入、

以降の文章はin_data_bという変数に代入していき、count()関数でワードの数をカウントするようにしてみました。

大文字・小文字を統一するために、in_data_bをlower()関数で小文字にしてから実行しました。

word = input()
in_data_b =
in_data_c =

while True:
    in_data_a = input().split()
    if 'END_OF_TEXT' in in_data_a:
        break
    else:
        in_data_b += in_data_a

for iii in range(len(in_data_b)):
    in_data_c.append(in_data_b[iii].lower())

print(in_data_c.count(word))

 

9_B:Shuffle

最初に入力された文字列の順番を、次の入力回数シャッフルする問題です。

"-"が車で無限ループで回して、指定回数分入力データをシフトして出力しました。

 

while True:
    word = input()
    if word == '-':
        break
    else:
        num  = int(input())
        iii = 0
        
        while iii < num :
            num2 = int(input())
            word_1 = word[0:num2]
            word_2 = word[num2:]
            word = (word_2+word_1)
            iii+=1
        print(word)

 

9_C:Card Game

9_Cは文字列の大小比較の問題です。>、<などで文字列も比較できるので、意外と簡単に記述できました。

 

num = int(input())

iii = 0
list_taro =
list_hana =
score_taro = 0
score_hana = 0

while iii < num :
    taro,hana = map(str,input().split())
    list_taro.append(taro)
    list_hana.append(hana)
    
    iii+=1


for jjj in range(len(list_taro)):
    if   list_taro[jjj] > list_hana[jjj] :
        score_taro = score_taro + 3
    elif list_taro[jjj] < list_hana[jjj]:
        score_hana = score_hana + 3
    else :
        score_taro = score_taro + 1
        score_hana = score_hana + 1
        
print(score_taro,score_hana)

 

9_D:Transformation

9_Dは文字列に対して、以下を実行する問題です。

  • print a bstr の a 文字目から b 文字目までを出力する。
  • reverse a bstr の a 文字目から b 文字目までを逆順にする。
  • replace a b pstr の a 文字目から b 文字目までを p に置き換える。

 

文字列を反転させるには::-1を使用しました。

s1 = 'ABCDE'
s2 = s1[::-1]

print(s1)  #=> "ABCDE"
print(s2)  #=> "EDCBA"

 

str1 = str(input())
int1 = int(input())
iii = 0

while iii < int1 :
    list_a = list(input().split())

    if list_a[0] == 'replace' :
        aaa = int(list_a[1])
        bbb = int(list_a[2])
        ccc = str(list_a[3])

        str1 = str1[:aaa] + ccc + str1[bbb+1:]
    elif list_a[0] == 'reverse' :
        aaa = int(list_a[1])
        bbb = int(list_a[2])
        str1 = str1[:aaa] + str1[aaa:bbb+1][::-1] + str1[bbb+1:]
    elif list_a[0] == 'print' :
        aaa = int(list_a[1])
        bbb = int(list_a[2])
        print(str1[aaa:bbb+1])
        
    iii += 1

 

Completed

 

 

 

 

 

/* -----codeの行番号----- */