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