以下の記事で,leetcode精選120問が公開されていたので,解いていきます. アメリカでソフトウェアエンジニアの職を探した

進捗はこちらのリポジトリに記録しております.

2026年4月24日~6月10日

Go言語を使って,いったんEasyの問題は全て解きました.(meeting-roomsは課金しないと閲覧できなかったので省きました) Go言語はシンプルで解きやすいですが,優先度付きキューを実現するための二分ヒープのデータ構造を自前で定義しなければならず,競技プログラミングには使えそうにないなと感じました. 逆に途中Rustに浮気していたのですが,RustはCPUバウンドの処理が得意な言語らしくそういったデータ構造は事前に定義してあるものが使えて便利でした.(kth-largest-element-in-a-streamにて) ドリル形式でわからない問題は解法を頭に入れてからその後理解するようにしました.

leetcodeで解くべき120問のEasy問題

メンタル面で変化がありました. 解いているうちに,より美しいコードを書きたいと思うようになってきました. また,実務でコードを読むスピードが速くなり,生成AIに書かせるときもより適切な指示ができるようになったと思います. コードを見る目が養われてきて,効率的なコードを書けるときがありました.

例えば,ステータスを扱う時,プログラムで扱っている値をユーザが画面上で見る値に変換するコードが書きたい場面を考えてみます. ステータスマッピングの例 この程度の例であればswitch文で書いてもいいかもしれませんが,Statusが多くなるとコードが冗長になるかと思います.

// statusにはプログラム側で管理されている文字列("Active","Deleted"等)が入っている想定
func convertVisibleStatus(status string) string {
    switch status {
        case "Active":
            return "有効"
        case "Deleted":
            return "削除済み"
        case "Freeze":
            return "凍結済み"
    }
}
func main() {
    fmt.Println(convertVisibleStatus("Active")) // 出力 : 有効
}

しかし,ハッシュマップを使えば,きれいに書くことが可能です.

var statusMap := map[string]string{
    "Active": "有効"
    "Deleted": "削除済み"
    "Freeze": "凍結済み"
}


func main() {
    fmt.Println(statusMap["Active"]) // 出力 : 有効
}