leetcodeというオンラインでプログラムを解くサービスを教えてもらった。Googleとかのホワイドボード面接はこういう問題を解いてるらしい。他にもHuckerRankがメジャーどころだそう。 Googleを受けたことはないが、どんなもんかと試しにeasyレベルを中心に100問ほど解いてみた。
進捗
いろんな言語から好きな言語を選べるが、仕事で使うメイン言語であるjavascriptをチョイス。業務でコードは書くものの、正直こういった競技プログラミングに慣れていないので、easyでもめちゃくちゃ難しい。。ただ動けばいいだけでなく、実行時間がかかりすぎるとタイムオーバーになってしまうので、計算量についての意識が必要。O(n^2)のソートとか書くと大体タイムアウトする。
学生の頃授業で解いたような問題が出てくるが、当時はC言語で解いていたのでjsとは勝手がだいぶ違う。javascriptは配列やjsのオブジェクトがあるので問題を楽に解ける面もあるが、たまに C言語ならポインタで書けるのにな~~ と思うことがあって面白い。
あと半端に昔の知識が残っていて、たとえ普段 Array#forEach
とか Array#map
とか使ってても、この手の問題になると途端に for (let i = 0; i < foo.length; ++i)
とか書いてしまうC言語脳。
頭の体操になるのでもうしばらく続けようと思う。