夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

SRM500は…

遅くなりましたが報告します。

今回は一問目、102点のコードが書けたのですが・・・


チャレンジフェイズですよ。。。


試してみようと気軽な気持ちでやってみて、失敗して・・・



得点が-25点にorz

やめてwww


問題はこんな感じですた。

適当にカードに数字を書いていって山札をつくって、そのカード一枚をとってその数字を控え、そのカードと書かれていた数字から1を引いた数と足した数をかいたものがほかのカードにあったらそれもふくめて山札からのぞくことをしたとき、与えられた山札は最短で何回で山をなくせるか

言葉がごちゃごちゃしてますがこんな感じ。

最初配列の要素って削除できないのかな?とか思いながらコード考えてたんだけど…


結局使い方分からんArrayList無理やり使おうとしてできなくて、


つまり力技でやったらタイムオーバーのコードorz
で、その部屋で一番早かった人のコードみたんですね。

めっちゃエレガントで感動しました。

mport java.util.*;

public class SRMCards {
        public int maxTurns(int[] cards) {
                Arrays.sort(cards);
                int res = 0;
                for (int i = 0; i < cards.length; i++) {
                        if (i + 1 < cards.length && cards[i+1] == cards[i] + 1)
                                i++;
                        res++;
                }
                return res;
        }
}

まじなるほどって感じでした。

まぁどっちにしろソートのこと知らなかったからわかるはずもないんだけど(;´Д`)

とりあえず収穫は

  1. ArrayListが整数型のArrayListの指定方法だと知ったこと。
  2. Array.sort()関数がしれたこと。
  3. 配列型の問題はソートするとうまくいくことがある。

そんなことも知らずに挑戦してたのか!とかいうのはやめてくださいね。

Java勉強中なんですから(笑)

ちなみに500は英語の前に屈しました。

というわけで次回でのさらなる自分の成長を期待しますww