okinawa

IT勉強メモ

多重for文・順列・組み合わせをPythonで書く

itertoolsで全部いける! Javaバージョン itertoolsで全部いける! import itertools # 直積 ネストしたforループと同じ 0~3の数字の全通り。SQLで言うところのCROSS JOIN # repeat=for文のネスト数と同じ。つまり数列の桁数。3*3*3=27 for product in iter…

二分探索

二分探索とは 理解のポイント 自力実装 条件を満たす最小の値を求める 条件を満たす最大の値を求める 参考サイト bisect関数 番兵の活用方法 例題 二分探索とは 二分探索とは、データ検索アルゴリズムの一つで、ソート(整列)済みのデータ群の探索範囲を半…

Mapで集計してからソートする系問題(AtCoder)

けっこうよく見るタイプなので、メモとして色々な解き方を書いておく。 ・問題文 1~Nまでの数字が3回出現する。 2回目に出現するのが早い順に出力する問題。 例:1 3 3 3 2 2 1 1 2 ←1~3までの数字が3回ずつ出現。 atcoder.jp 解き方1:答えがわかっ…

ユークリッドの互除法

放送大学の授業でユークリッドの互除法を見て、その後にちょうとAtCoderでユークリッドの互除法を使う問題に出会った。 ということで備忘録として。 atcoder.jp ユークリッドの互除法とは プログラム(引き算バージョン) プログラム2(余りバージョン) gc…

【初心者向け】Notionでタグライブラリを作る

タグライブラリが便利らしいので、Notionに初挑戦してみたら大変だったので、自分と同じような誰かのためになればと。 参考サイト タグライブラリの作り方 新しいタグはTags Databaseからでも、Master Notesからでも作れる。 タグライブラリを作ると何が嬉し…

多重for文を再帰関数で書く

この問題が解けなかったので、再帰関数を勉強した。⇩ atcoder.jp 参考サイト 多重for文 再帰関数の使い所 全探索・順列全探索・組合せ全探索を再帰関数で書いてみた 処理の流れイメージ 再帰処理のスレッドとは? ABC302-C Almost Equalの解答 組合せ全探索…

深さ優先探索のお勉強

深さ優先探索を理解するために、写経したり実装したりしてみた。 参考サイト 深さ優先探索とは 自分なりの理解 計算量 使い所 グラフを隣接リスト表現で作ってみる 木構造を深さ優先探索する 再帰関数バージョン 入力値 再帰関数の面白いところ ノード0とノ…

AtCoder Beginner Contest 301

記念すべき初rated参加。 コンテスト参加は2回めだけど前回はDDos攻撃でunratedになった。 A - Overall Winner B - Fill the Gaps 参考解答 C - AtCoder Cards atcoder.jp A - Overall Winner ・改善点 過半数勝利を先にどっちがするか判定 ⇨ 同点なら先に過…

無課金ChatGPTにAtCoderの解説頼んでみた

最初にまとめ 質問文 ChatGPTの回答 追加の質問 追加の回答 問題文&ソースコードの引用元 AtCoderの解説読んでもよくわからない所があったので、ChatGPTに質問してみた。 最初にまとめ 無課金でもChatGPTさんは強かった。 わからない部分を追加で質問できる…

テーブル結合でハマったこと

LEFT OUTER JOINで左側にだけ結合条件つけても意味なし 例:テーブル2と3を結合 結合条件を複数テーブルにするときは注意 LEFT OUTER JOINで左側にだけ結合条件つけても意味なし 下記のような左テーブルにしか効かない結合条件しても意味無し。 左側は全て…

論理的思考能力には瞬発型と長考型の2つがあるのでは

瞬発と長考 なんでこんなこと考えたか 自分はどっちタイプか 羽生先生の本に書いてあったこと 参考 瞬発と長考 瞬発:ほとんど考えることなくぱっと答えが思い浮かぶ。 長考:じっくりと筋道立てて答えを導き出す。 なんでこんなこと考えたか 仕事してるとえ…

LeetCodeその4 Top K Frequent

自分の解答 自分の解答2 模範解答 学んだこと int配列の中から出現数が最も多い要素をk個取り出す問題 自分の解答 /** 自分の解答 Accepted! * Map<数値, 出現数>に一旦格納してから * Map<出現数, 数値リスト>に格納し直す * 出現数でソートして高出現数順…

NOT EXISTSとDISTINCTでハマった話

大して難しいことではなかったのにハマったので備忘録。 やりたかったこと テーブル結合の結果をイメージできてなかった DISTINCTを勘違いしていた EXISTSを使い慣れていなかった 正解 感想 やりたかったこと 投入データでテーブルを更新 ↓ 投入データに含ま…

LeetCodeその3:TwoSum

自分の解答 自分の解答2 模範解答 学んだこと 自分の解答 int配列の中から2つを取り出し、足した値がTargetと同じになる組み合わせを探す問題。 2重ループ。Accept public int[] twoSum(int[] nums, int target) { int[] answer = new int[2]; for(int i =…

LeetCodeその2:ValidAnagram

自分の解答1 自分の解答2 模範解答 ちょっとずるいやつ 自分の解答1 2つの文字がアナグラムになっているかを判定する問題。 Accept public boolean isAnagram(String s, String t) { // 文字数が違う場合はfalse if (s.length() != t.length()) { return fal…

HashMapについてのメモ

HashMapはキーと値のセットを要素として持つデータ構造。 参考 検索がO(1)になる理由 アドレス決定の例 参考 わかりやすいのでこっち見たほうが早い↓ JavaにおけるHashMapの仕組みを深堀り - Qiita 検索がO(1)になる理由 HashMapは要素を格納するメモリアド…

LeetCodeその1:ContainDuplicate

NeetCodeなるものの存在を知ってLeetCodeを始めました。 解説動画がわかりやすくてとても良いです。 英語なので大変ですが。。。 neetcode.io 自分の解答 模範解答 学び 学び2 自分の解答 何も考えずに2重ループで重複チェック。 タイムオーバーでした。 //…

Javaのコレクション一覧と計算量

各コレクションの特徴 List Map Set コレクションの計算量 計算量の目安 各コレクションの特徴 ・参考 コレクションクラスの比較 - Javaちょこっとリファレンス xxxxxxxxxxx ArrayList LinkedList HashMap LinkedHashMap TreeMap HashSet TreeSet インタフェース Li…

バッファプールとログバッファ

バッファプールとログバッファ SQLServerでのバッファプールの確認方法 バッファプールとログバッファ バッファプール:ストレージ(HDD)にあるRDBのデータの一部を保持している。高速化のため。 ログバッファ:更新処理のときに更新情報をログバッファ上に…

統計情報とは

統計情報とは カーディナリティの補足 ヒスグラムの補足 参考書籍 統計情報とは 実行計画を練るためのネタ元。 各テーブルのレコード数 各テーブルの列数と列のサイズ 列値のカーディナリティ(値の個数) 列値のデータ分布(どの値がいくつあるかのヒストグラ…

SQLチューニングの一覧

早い段階で取得するデータ量を減らす インデックスが使われなくなる時 インデックス列を加工する 否定形とOR 暗黙の型変換 複合インデックスは列の順番に注意 サブクエリを減らす 参考書籍 早い段階で取得するデータ量を減らす Where条件が複数ある場合、抽…

HAVING句をマスターすると集合志向が理解できるらしい

WHEREとHAVINGで対比するとわかりやすい WHERE HAVING 参考書籍 WHEREとHAVINGで対比するとわかりやすい WHERE:1行の特徴を調べる HAVING:集合の特徴を調べる 例:下記テーブルから算数80点以上&国語80点以上の生徒を調べたい 答えはstudentId 100 200。 …

【SQL】テーブル同士の比較

テーブル同士の比較 テーブル同士が等しいか異なるかを集合演算子で華麗に比較する方法。 もしテーブルAとテーブルBが完全に等しければ、UNIONの結果とINTERSECTの結果も等しい。 もしテーブルAとテーブルBが異なれば、UNIONの方がINTERSECTより必ず大きくな…

【SQL】テーブル結合で行を増殖させないポイント

テーブル結合で行を増殖させないポイント 1対1で結合 1対多で結合 多対多で結合 DISTINCT・GROUP BYで増殖対策 テーブル結合で行を増殖させないポイント ON句の条件を 1対1 1対多 にする。 1対1で結合 ↑元テーブル SELECT t4.id, t5.id FROM table4 t4 le…

【SQL】3値論理とは

3値論理 普通は TRUE・FALSE の2つ。 SQLは TRUE・FALSE・UNKNOWNの3つ。 いつUNKNOWNになるの? NULLが絡むとUNKNOWNになる。 WHERE A = NULL -- UNKNOWNになる なのでIS NULLやIS NOT NULLがある。 WHERE A IS NULL OR A IS NOT NULL NOT AND ORでUNKNO…

集合指向言語と手続き型言語の違い

集合指向言語と手続き型言語 SQLとJavaで同じことをやってみる SQL Java 集合指向言語の思想 余談:MAX関数の内部処理 関連記事 参考 見返す用のかんたんなメモとして。 集合指向言語と手続き型言語 集合指向:まとめて処理 手続き型:1個ずつ処理 JavaのSt…

SQLの集合演算をテーブル結合でやってみる

SQLの集合演算 和集合:UNION / UNION ALL 差集合:EXCEPT 積集合:INTERSECT 関係除算を自力でやる 余りのある関係除算 厳密な関係除算 参考 集合演算子を使うよりテーブル結合のほうが処理が速いこともあるらしい。 SQLの集合演算 和集合:UNION / UNION A…

【SQL】特性関数とは

SQLの特性関数について 特性関数とは、入力項がある集合に含まれるかどうかを調べるための関数で、含まれるなら 1 を、含まれないなら 0 を返すものです²。例えば、次のようなテーブルがあるとします。 id name gender 1 A M 2 B F 3 C M このテーブルからge…

GROUP BYってなんなの?

Group Byとは 部分集合に分けるのがGroup By。 表示結果をみると行が減るから行が圧縮されるような印象を持っていたがそんなことはない。 元テーブル ・実行SQL select tenpo_cd from Table1 group by tenpo_cd 実行結果 イメージ図↓ Group By後 実行結果だ…

GROUPING演算子とWINDOW関数のフレーム

あまりちゃんと理解できていない。 自分用のメモとして。 GROUPING演算子 ROLLUP:小計、合計を出力 CUBE:3次元以上のデータ。よくわからなかった。→参考:https://it-trend.jp/bi/article/cube 元テーブル select tenpo_cd, bunrui, sum(value) from Table1…