Coding_Gamesメモ_A_contribution_by_JBM

Coding_Gamesメモ_A_contribution_by_JBM

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

感染病シミュレーター

ルール

  • ? 個の培地がN 本のチューブで繋がれている
  • 1日毎に感染した培地から隣接した未感染の培地に広がる

インプット

1行目 チューブの数 N
2行目から チューブで繋がっている場所 A B

アウトプット

1行目 全ての培地を感染させるのにかかる最短日数

使用したクラス

HashMap

HashMap<キーの型 , データの型>

HashMap.put(キー , データ)
キーとデータを登録

(Boolean) = HashMap.containsKey(x)
xがキーとして登録されているか

x = HashMap.get(キー)
キーと紐づけられたデータを出力

(Set<K>) = HashMap.keySet()
キーをSet 形式で出力
キーがIntegerなら(Integer[]) = HashMap.keySet().toArray(new Integer[HashMap.size()])で配列にすることができる

(int) = HashMap.size() マップのキーの数を出力

ArrayList

ArrayList<型> al = new ArrayList<型>()
型には基本のデータ型(intなど)は使えない
ラッパークラスを使う

(boolean) = ArrayList.add(x)
x をリストの最後に追加

(E) = ArrayList.get(x)
リストの指定された位置にある要素を返す

(void) = ArrayList.clear()
リスト内のすべての要素を削除

T = ArrayList.toArray(T a)
ArrayList の内容を配列に出力
Integerなら(Integer[]) = ArrayList.toArray(new Integer[ArrayList.size()])で配列にできる

(int) = ArrayList.size() リスト内の要素の数を出力

Integer

考え方

各培地から感染させて総当りで最短日数を探す
最短以上になる処理の切り捨て、感染フラグ再利用、培地隣接情報の逆引き、感染させる培地にあたりをつける、など処理時間の短縮が必要

Coding_Games:https://www.codingame.com/
HashMap (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashMap.html
ArrayList (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
Integer (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html