【ページ更新日:2020年10月29日】
エンジニアへ転職をするために取り組んだことを紹介します。
また、これからのキャリア形成について今の考えをまとめます。
これまでの経歴
前職期間でやったこと
面接でやったこと
面接でやったこと
問題は次のとおりです。
あなたは、N人の社員、社員1,…,Nを3つ以下のグループに最適に分割するプログラムを作ろうとしている。
すでに、社員のペア( i , j )(1≦i<j≦N)すべてに対して、彼らを同じグループに含めた際に生じる幸福度 Aij(正とは限らない)がAIによって計算されている。グループ分けの好ましさを、同じグループに含まれる社員のペア( i , j )すべてに対するAijの総和(そのようなペアが存在しなければ0)と定義する。グループ分けの好ましさの最大値を求めよ。
<制約>
AtCorder 第一回アルゴリズム実技検定過去問2019年12月G問題
2≦N≦10
−1,000,000≦Aij≦1,000,000
入力中の値はすべて整数である。
プログラムコード
問題の解答となるコードは次のとおりです。
※間違いの指摘やアドバイスなどあれば教えてください。
N = int(input("データ数を入力してください >>> ")) list = [] check_list = [0] * N flag = 0 for i in range(N): m = int(input()) list.append(m) check_list[m-1] += 1 for i in range(N): if check_list[i] == 0: print ("{} が {} に書き換えられた".format(i+1,check_list.index(2)+1)) flag = 1 if flag == 0: print("Correct")
ポイント
今回のPythonコードのポイントは次の1点です。
- リストの初期化:check_list = [0] * N
- indexメソッド
リストの初期化「要素数を決める」
次のようにすることで、要素0を定数N個にすることができる。
check_list = [0] * N
たとえば、N=5のとき要素数5のリストができる。
# 要素数5のリストをつくる check_list = [0] * 5 # => check_list = [0,0,0,0,0]
リストのindexメソッド
indexメソッドは、指定した要素をもつインデックス番号を返します。
今回のコードでは次のように使用されていました。
print ("{} が {} に書き換えられた".format(i+1,check_list.index(2)+1))
リファクタリング
調べながら、より短くしてみました。
リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。
リファクタリングしたコードを紹介したいと思います。
コードは次のとおりです。
alist = [int(input()) for _ in range(6)] alist.sort(reverse = True) print(f"3番目に大きい数は {alist[2]} です")