Daily Coding Problemからの問題
はじめに
Daily Coding Problemというサービスがあったので登録してみました。これは毎朝(確認してみたらAM2:30でした)にGoogleやamazonなどの選考フローで出されたCoding Interviewの問題を一問送ってくれるサービスです。今回は初めてきた問題を解いてみました。
www.dailycodingproblem.com
問題
Given a list of numbers and a number k, return whether any two numbers from the list add up to k.
For example, given [10, 15, 3, 7] and k of 17, return true since 10 + 7 is 17.
Bonus: Can you do this in one pass?
一つのリストとある数kが与えられた時、リストの中の二つの数を足してkになるかどうかの判定を返せ。
こんな感じの問題ですかね。シンプルな問題だと思います。
実装
メールのタイトルにもEasyとついていましたが、アルゴリズム力も実装力もない自分は一つの方法しか実装できませんでした。
全ての数を総当たりで調べていく方法です。(これすらも正しく実装できているか不安ですが・・・)
def find_num2k_roundrobin(list, k): for i in list: for j in list: if j + i == k: return True break return False
計算量はかな。多分もっと早い手法があると思います。
まとめ
こんな風に毎日問題が届いてそれを解いていくという感じです。Premiumにしたら次の日の朝に解放が送られてくるそうです。
しばらくは無課金で様子見します。あと今日届いた「問題解決のPythonプログラミング」も活用してプログラミング力を上げていきたいと思います。
問題解決のPythonプログラミング ―数学パズルで鍛えるアルゴリズム的思考
- 作者: Srini Devadas,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る