第58回【Python】全ての要素を用いた処理、配列のサイズの変更

現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 58 回目です。

レオくんをモフモフしていたら顔に強烈な一撃をいただきました。流血沙汰ですが、まず考えたのは、血がレオくんにつかないようにしないと、です。

それでは、今日も頑張ってみようと思います。

全ての要素を用いた処理

配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N が与えられるので、A の要素の全てのペアについてのかけ算の結果を出力してください。

A_2 * A_1
A_3 * A_1
A_3 * A_2
A_4 * A_1
A_4 * A_2
A_4 * A_3
...
A_N * A_{N-1}

全ての A の各要素のペアについてのかけ算の結果を以上のペアの順番で出力してください。
また、出力の末尾には改行を入れてください。


すべてのテストケースにおいて、以下の条件をみたします。

・2 ≦ N ≦ 100
・-100 ≦ A_i ≦ 100 (1 ≦ i ≦ N)


5
1
2
3
4
5

なんか問題文を読むと難しく感じます。

A_1 * A_2 → A_1 * A_3 → A_1 * A_4

であれば、簡単にイメージがつくのですが、どうやらそれを求められているのではない模様。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
for i in range(N):
    for j in range(i):
        print(A[i] * A[j])
VBA
Private Sub test1()

N = Cells(1, 1)
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
For i = 1 To N - 1
    For j = 0 To i - 1
        Debug.Print A(i) * A(j)
    Next
Next

配列のサイズの変更

配列 A の要素数 N と新たに作成する配列のサイズ n , 配列 A の各要素 A_1 … A_N が与えられるので、配列 A の先頭から n 要素を順に保持する配列を作成してください。新たに作成する配列の要素数が A の要素数よりも大きい時は、サイズが合うように 0 を A の要素の末尾に追加してください。


すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ N ≦ 100
・ 1 ≦ n ≦ 100
・ -100 ≦ A_i ≦ 100 (1 ≦ i ≦ N)


1 19
1

要素数と配列のサイズは、どちらかが大きいパターンと等しいパターンが存在する。そのどちらの条件も満たすことができる方法を考える。

Python
N,n = map(int,input().split())
A = [0] * n
for i in range(min(N,n)):
    A[i] = int(input())
for a in A:
    print(a)
VBA
Np = Split(Cells(1, 1), " ")
N = Val(Np(0))
p = Val(Np(1))
Dim A() As Integer
ReDim A(p - 1)
For i = 0 To N - 1
    If i < p Then A(i) = Cells(i + 2, 1)
Next
For Each v In A
    Debug.Print v
Next

最後に

配列操作のいろいろなパターンを経験できて楽しい。

実際に、過去に実務で似たようなパターンに遭遇して、ああ、あのときはもう少し面倒な書き方していたな、とか反省することもある。時間に追われる実務では、すべてのテストケースで問題なければ OK って感じで、より深く追求することができないこともある。

引き出しは多く多く持っていた方が絶対良い。

引き続き、よろしくお願いいたします!

PythonPython,paiza,学習

Posted by LeoSaki