K さんは paiza のアカウントを作成することにしました。そのためには、パスワードの設定が必要>なことがわかりました。
そこで K さんは忘れないように、次のようなルールにのっとって N 文字のパスワードを設定するこ>とにしました。・ ルール
K さんは N 文字のうち、 Q 文字だけ覚えておく文字を決めておく。
具体的には n_i 文字目を c_i とだけ決めて、残りの全ての文字を C にする。K さんの設定したパスワードを当ててください。
という問題。
N = int(input())
Q = int(input())
for i in range(Q):
A =[list(map(str,input().split()))]
C = input()
for i in range(1,N):
if i == A[i-1][0]:
print(A[i-1][1])
else:
print(C)
要するに、配列Aに条件を入れて、その後N回分ループして、Aのインデックスと同じだったら、Aの要素を出力、違ったらCを出力するということを考えた。
だが、これだとエラーになる。
なぜかというと、たとえば、上の場合、i=2のときA[1][0]を出力するわけだが、Aにはその要素は存在していない。つまり、条件配列は最後のインデックス番号まであるとは限らないため、インデックスがループを回る前に尽きてしまってエラーになるからである。
他にアイデアが見つからず30分を過ぎてしまいギブアップ。
答えは後ほど。
まず、配列は要素数をかけることで、型、要素数があらかじめ入った配列ができる。
n = [0] * Q
c = [""] * Q
ここで、nにはi文字目を、cにはc_i を登録。values配列に入った値を使う。
n[i] = int(values[0]) - 1
c[i] = values[1]
そして、ansという配列を作るパスワードのN文字分、全部Cで埋めてしまう。
ans = [C] * N
この時点で
ans = [C,C,C,C,C,...C)となっているわけだ。
で、ここからN回分cをループさせ、
該当するものはn[i]番目のところなので、c[i]を上書きさせる
ans[n[i]] = c[i]
そして結果を出力、というわけだ。
なるほど。。。。
まだまだでした。。。
配列の作り方や、配列の要素の出し方など、勉強しておきます。。。
N = int(input())
Q = int(input())
n = [0] * Q
c = [""] * Q
for i in range(Q):
values = input().split()
n[i] = int(values[0]) - 1
c[i] = values[1]
C = input()
ans = [C] * N
for i in range(Q):
ans[n[i]] = c[i]
print("".join(ans))