paizaの問題を解答するための準備

f:id:nazuna_0124:20170319171727p:plain

ようやくpaizaに解答するための権利を手に入れました!


えと、登録できてなかったとかではなく、

標準入力がよくわかんなくて採点してもらえなかったのです。


思わずはまってしまって、結構遊んでしまいました。

わたしだとBランクの問題ができたりできなかったりです。


Tree構造と再起がわからないので完全にそのせいですね。


paizaの問題は基本的にアルゴリズムの問題です。

なのでJavaの練習にはなりません


ランクDに関しては、文法知ってれば大抵だいじょうぶ。

それでCなのですが、一般化というやつが必要です。


a[0],a[1],a[2]…となってたらa[i]と表せるってやつです。


この辺を教えてくれるのは見たことないです。

たまに才能で片付けられてるときも。


一般化をどう教えるかについて、いろいろ悩んでたので

思わずハマったというわけですが、それはまた別の機会に。


以下、備忘録です。

言い忘れました Netbeansでコード作成する人向けです。

Netbeansで標準入力するとCtrl+Dで修了できません。(見つからなかった)

そのための対処含めてになります。


標準入力について

いわゆるStreamで受け取れます。

テキストファイルに例を貼って、ファイルを読み込めば

おんなじ状況でテストできます。

ついでにコレクションに突っ込みます。

     Scanner sc = new Scanner(new File("C:\\test.txt")); 
     List<String> ls = new ArrayList<>();
        try {
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                ls.add(line);
            }
        } finally {
            sc.close();
        }


よく使う処理

知らないと参加できないケースが多いのでまとめ。

特定文字列で分割

半角スペース区切りが多いです。

返り値は配列になります。

Str.split(“ ”);

文字型<>数値型の変換

言語によってはいらないのかも?


文字>数字

Integer.parseInt(str);


数字>文字

String.valueOf(int)

文字のn番目の文字

i番目の文字を一文字だけ抜き出したいとき。

str.substring(i,i+1)


最後の一文字削除

これはやり方というより、最後に余分なスペースがあると

正解にならないことに注意です。

str.substring(0,str.length()-1);