Coding_Gamesメモ_XML_MDF-2016
Coding_Gamesメモ_XML_MDF-2016
javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:
System.err.println( );
を使うとデバックしやすくなる。(エラー出力は評価に影響しない)
内容
一番重いタグを探す
ルール
開始タグと終了タグで作られた文字列の中で一番重いタグを探す
タグのルール
- 開始タグ アルファベット1文字
- 終了タグ
'-' + '(終了させたいタグ)'
- タグは重複することがある
- タグの重さは1/n の合計で計算する
例
"ab-bcd-d-c-ae-e"
a( b c[ d{} ] ) e()
タグ a 深さ 1 重さ 1/1
タグ b 深さ 2 重さ 1/2
タグ c 深さ 2 重さ 1/2
タグ d 深さ 3 重さ 1/3
タグ e 深さ 1 重さ 1/1
例2
"a-abab-b-a-b"
a() b( a[ b{} ] )
タグ 1つ目のa 深さ 1 重さ 1/1
タグ 1つ目のb 深さ 1 重さ 1/1
タグ 2つ目のa 深さ 2 重さ 1/2
タグ 2つ目のb 深さ 3 重さ 1/3
タグ a の重さ 1/1 + 1/2 = 1.5
タグ b の重さ 1/1 + 1/3 = 1.33...
インプット
1行目 タグ階層の文字列 sequence >= 1024
アウトプット
一番重いタグ
使用したクラス
String
(char) = String.toCharArray();
char配列を出力
タグ毎の重さを計算するためアルファベット分の配列を作る とすることでa-z から数字へ変換できる タグの配列に現在の階層の逆数を掛けて足していき、最後に一番大きいタグを出力する考え方
char C = 'c' ;
arphabet[ (int) C - (int) 'a' ]
重さは小数点以下になることがあるので小数点以下を扱える方が必要
計算は優先順位がある(()
*
+
など) ので一部が小数点以下を扱える型でもint同士の計算になってしまうことがある
Coding_Games:https://www.codingame.com/ String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html 文字コード - 文字列 数値 変換 java:https://code.i-harness.com/ja-jp/q/a4fee2