第39回【Python】要素の削除、要素の挿入
現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 39 回目です。
多忙を極めている今日この頃。学習だけは続けようと頑張っています。年度替わりの初月はどうしようもないです。例年のことだけれど慣れないものです。
それでは、今日も頑張ってみようと思います。
要素の削除
1 行目に整数 N, M が与えられます。
2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。
左から M 番目の要素を削除し、削除した後の N – 1 個の要素を改行区切りで出力してください。
なお、左端を 1 番目とします。
N M
a_1 a_2 ... a_N
すべてのテストケースにおいて、以下の条件をみたします。
・N は 2 以上 10 以下の整数
・M は 1 以上 N 以下の整数
・a_i (1 ≦ i ≦ N) は 1 以上 10 以下の整数
5 3
1 2 3 4 5
左端を一番目としているところに注意。あとはそんなに難しい問題ではない。
Python
N,M = map(int,input().split())
A = list(map(int,input().split()))
del A[M-1]
for a in A:
print(a)
VBA
Dim L() As Variant
NM = Split(Cells(1, 1), " ")
N = Val(NM(0))
M = Val(NM(1))
A = Split(Cells(2, 1), " ")
ReDim L(N)
For i = 0 To UBound(L) - 1
L(i) = A(i)
Next
For i = M - 1 To UBound(L) - 1
L(i) = L(i + 1)
Next
ReDim Preserve L(UBound(L) - 1)
For Each li In L
Debug.Print li
Next
VBA だと途端に難易度が上がった。変数 A を配列と宣言しても、Split 関数で受け取れない。そのままだと Redim ができない。苦肉の策でこう書いてみたけれど、正解はどうなんだろう・・・。
要素の挿入
1 行目に整数 N, M, K が与えられます。
2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。
左から M 番目に K を挿入し、挿入した後の N + 1 個の整数を改行区切りで出力してください。
なお、左端を 1 番目とします。
すべてのテストケースにおいて、以下の条件をみたします。
・N, M, K は 1 以上 10 以下の整数
・M は 1 以上 N 以下の整数
・a_i (1 ≦ i ≦ N) は 1 以上 10 以下の整数
5 3 10
1 2 3 4 5
こちらも先ほどと同様、左端を一番目としているところに注意。あとはそんなに難しい問題ではない。
Python
N,M,K = map(int,input().split())
A = list(map(int,input().split()))
A.insert(M-1,K)
for a in A:
print(a)
VBA
Dim L() As Variant
NMK = Split(Cells(1, 1), " ")
N = Val(NMK(0))
M = Val(NMK(1))
K = NMK(2)
A = Split(Cells(2, 1), " ")
ReDim L(N)
For i = 0 To UBound(L) - 1
L(i) = A(i)
Next
ReDim Preserve L(UBound(L) + 1)
For i = UBound(L) To M Step -1
L(i) = L(i - 1)
Next
L(M - 1) = K
For Each li In L
Debug.Print li
Next
インデックスを頭の中で整理しながらコードを書くのは大変。LeoSaki(旦那)は紙にメモをとりながらやってます。結局のところ、昔ながらの手書きが一番確実な方法です。LeoSaki(旦那)の場合は。
最後に
Python で書くと秒で終わるのに、VBA で書くと時間かかった。Python 素敵。でも、業務効率化を考えるときに真っ先に思い浮かぶのは VBA なんだなぁ。office 365 だと VBA を使うのがちょっと面倒だったり、いろいろと問題が起きているけれど。
型の問題は奥深い。でも、他の言語でコードを書く時にとても役立っている。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません