ゼロから始めるLeetCode Day71 「1496. Path Crossing」
概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day70 「295. Find Median from Data Stream」 次回 ゼロから始めるLeetCode Day72 「1498. Number of Subsequences That Satisfy the Given Sum Condition」 Twitter やってます。 問題 1496. Path Crossing 難易度はEasy。 一番新しく追加されたEasyの問題です。 問題としては、path[i] = ‘N’, ‘S’, ‘E’, ‘W’ のような文字列のパスが与えられたとき,それぞれ1単位の移動を表す.2 次元平面上の原点 (0, 0) を起点とし、path で指定されたパス上を歩きます。 パスが任意の点で交差している場合、つまり以前に訪れたことのある場所にいる場合はTrueを返します。それ以外の場合は False を返します。 画像の関係で例を貼れないので各自確認をよろしくお願いいたします。 解法 x,yで座標を管理して最初の座標をdictで管理する、という方法を取りました。 うーん。 あまりスマートではないと思うのですが、pathをfor文で回して各文字列と一致するならば座標を変更するというものです。 しかしこれでも回答数が少ないせいかスピード自体は上位なんですよね・・...