第53回【Python】要素の種類数、【配列を参照する操作】全ての要素に対する操作

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

はじめに

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

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

Python が好きなのは六村リオさんのはずなのに、新 Python 入門は、霧島京子さんがやってるんですよね。なんでだろう。という疑問を今更になって感じた。

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

要素の種類数

配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N が与えられるので、配列 A には何種類の値が含まれているかを求めてください。


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

・1 ≦ N ≦ 100
・0 ≦ A_i ≦ 100 (1 ≦ i ≦ N)


5
1
2
3
2
1

「何種類の値が含まれているか」を言い換えれば「重複を削除する」ということ。この、言い換えれば、に気づくことが素早くコードを書く上で重要なんじゃないかな。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
setA = set(A)
print(len(setA))

ということで、set を利用しました。知っていると便利なやつ!

VBA
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
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
For i = 0 To UBound(A)
    dic.Add A(i), A(i)
Next
Debug.Print dic.Count

【配列を参照する操作】全ての要素に対する操作

配列 A の要素数 N と整数 K, 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、配列 A の全ての要素を + K した後の A の各要素を出力してください。


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

・1 ≦ N ≦ 100
・-100 ≦ A_i, K ≦ 100 (1 ≦ i ≦ N)


5 100
1
2
3
4
5

各商品の税込み額を出す、みたいなイメージです。汎用性高そう。

Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
for a in A:
    print(a + K)
VBA
NK = Split(Cells(1, 1), " ")
N = Val(NK(0))
k = Val(NK(1))
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
For Each v In A
    Debug.Print v + k
Next

最後に

Python の set 型であったり、VBA の dictionary 型であったり、いろいろと応用がきく使い方ができるものを知っているか知っていないかが大きな分かれ目。VBA の dictionary 型ってあんまり使った記憶がない。というか、この重複削除以外で使った記憶がない・・・。

最近までやっていた「配列メニュー」の問題では、なかなか応用性を見いだせなかったけれど、「配列活用メニュー」ではいろいろな使い方が想定できると思う。まさに「活用」!

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

Pythonpaiza,学習,Python

Posted by LeoSaki