Pythonでの従業員の重要性
従業員情報のデータ構造があり、従業員の一意のID、重要度の値、および直属の部下のIDがあるとします。例として、従業員1は従業員2のリーダーであり、従業員2は従業員3のリーダーです。そして、それらの重要度の値がそれぞれ15、10、および5であるとします。次に、従業員1は[1、15、[2]]のようなデータ構造を持ち、従業員2は[2、10、[3]]を持ち、従業員3は[3、5、[]]を持ちます。
したがって、会社の従業員情報と従業員IDがある場合は、この従業員とそのすべての部下の重要度の合計値を見つける必要があります。
したがって、入力が[[1、5、[2、3]]、[2、3、[]]、[3、3、[]]]、1のようである場合、出力はEmp1として11になります。重要度の値は5で、Emp1には2つの直接の従属があり、それらは-Emp2とEmp3です。これで、両方の重要度の値は3になります。したがって、Emp1の重要度の合計値は5 + 3 + 3=11です。
これを解決するには、次の手順に従います-
- 重み:=新しいマップ、リーダー:=新しいマップ
- 従業員のeごとに、
- weight [e [0]]:=e [1]
- リーダー[e[0]]:=e [2]
- res:=0
- res:=res + weight [id]
- キュー:=Leader [id]
- キューがゼロ以外の場合は、
- new_queue:=新しいリスト
- node:=キューから最後の要素を削除します
- res:=res + weight [node]
- Leader [node]がゼロ以外の場合、
- new_queue:=new_queue +Leader[リーダーのサイズ]
- queue:=queue + new_queue
- return res
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def getImportance(self, employees, id): weight = {} leader = {} for e in employees: weight[e[0]] = e[1] leader[e[0]] = e[2] res = 0 res += weight[id] queue = leader[id] while queue: new_queue = [] node = queue.pop() res += weight[node] if leader[node]: new_queue += leader[node] queue += new_queue return res ob = Solution() print(ob.getImportance([[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1))
入力
[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
出力
11
-
Pythonのissuperset()
この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',
-
PostgreSqlデータベースにPythonタプルを挿入する方法は?
PostgreSqlデータベースはデフォルトでポート番号5432にインストールされています。PostgreSqlへのPythonインターフェースは、psycopg2モジュールをインストールすることで提供されます。テストデータベースと、fname、sname、age、gender、salaryフィールドを持つemployeeテーブルが利用可能であると仮定します。 最初に接続を確立し、Pythonスクリプトのステートメントに従ってカーソルオブジェクトを取得します。 import psycopg2 conn = psycopg2.connect(database = "test"