shomanのブログ

ただの備忘録

修士課程を振り返って

修士課程を修了しました.以下は,主に自分で後に振り返るためのポエムです. 先日,東京工業大学情報理工学院情報工学系情報工学コースを正式に修了し,修士(工学)を獲得した.学部も含めると5年間の学生生活だった.もっとも,小学生から含めると人生の大…

メルカリインターンでGoの関数の複雑度を測るツールを作った話

こんにちは.先週、メルカリのオンラインインターンに参加してきました! インターンの概要はここに載っています. mercan.mercari.com 最近いつも研究がやばいと言いながら、参加したい気持ちを抑えられませんでした… 概要 5日間でGoの静的解析を学び、ツー…

Goのcontainer/heapのソースコードを読んでいく

container/heapとは Goの標準ライブラリには、データ構造の一種であるヒープがcontainer/heapによって提供されています。 github.com heapはヒープソート(heap sort)や優先度付きキュー(priority queue)の実装に使われる重要なデータ構造のうちの一つです。 …

AtCoder ABC165 C - Many Requirements

以下の条件を満たす数列を全て生成します。 は、長さの正整数列である。 その後、それぞれに対し個ある制約を当てはめスコアを計算し、最大値を求めます。 atcoder.jp 上の条件を満たす数列の生成は深さ優先探索(DFS)でできます。 Goでの実装は以下です。 //…

Golangのjson.UnmarshalでJSONをデコードできない

Go

問題 以下のコードで、Person構造体のp.nameに"hoge"が入ることを期待してました。 package main import ( "encoding/json" "fmt" ) type Person struct { name string `json:"name"` } func main() { str := `{"name": "hoge"}` var p Person if err := jso…

AtCoder ABC157 D - Friend Suggestions BFSとUnionFind

問題概要 SNSに人の人がいます。 この人の間には、 組の「友達関係」と、 組の「ブロック関係」が存在します(いずれも双方向)。 各人において、友達の友達の…とたどって行き着く人のうち、直接の友達でもブロック関係にもない人(友達候補)の数を求めてくださ…

最小値をO(1)で返すスタックの実装

概要 前の記事でGoによるスタックの実装を紹介しました。 shoman.hatenablog.com そんな中でCracking the Coding Interviewの3.2の問題で以下のようなものがありました。 問題 pushとpopに加えて、最小の要素を返す関数minを持つスタックをどのようにデザイ…

Goでのスタックの実装

Go

概要 Goの標準パッケージにはスタックは含まれていない様です。 そこでスライスを使ってintを格納するスタックを実装してみました。 環境 golang v1.12.5 実装したメソッド Push: 値をトップに追加 Pop: 値をトップから削除して返す Peek: トップの値を返す …

障害物のあるグリッドの最短経路

前置き Cracking the Coding Interviewの8.2に以下のような問題がありました。 世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法作者:Gayle Laakmann McDowell出版社/メーカー: マイナビ出版発売日: 2017/02/27メディア: Kindle版 問…

【回文の順列】ビット列の中で1が一個であるか判別する方法

前置き ある問題を解いているときに、ビット列の中で1が一個であるか判別する方法で、なるほど!と思った解法が載っていたので、忘れないよう書き留めておきます。 結論 if checker&(checker-1) == 0 { // 1が一個だけ } else { // それ以外 } チェックした…

AtCoder【ARC061 C, ABC045 C】たくさんの数式 - Many Formulas

問題 '1'~'9'の数字からなる文字列が与えられるとき、文字の間に任意の数の'+'を入れて表される数式の値の和を求めよ。 制約 C - Many Formulas 前置き 各数字の間に'+'を入れるか入れないかを考えると、全部で通りとなります。 一つの解法として、bit全探索…

サイボウズ サマーインターンシップ2019に参加してきました

はじめに サイボウズとは kintone 参加したきっかけ 選考 当日 1日目 2日目 3日目 4日目 5日目 感想 はじめに サイボウズのサマーインターンシップ2019のWebサービス開発コースに参加してきました. 8/5~8/9の5日間 サイボウズのkintone(詳細は後述)というWe…

ブログはじめました

こんにちは,shomanといいます. 東京工業大学で情報系を専攻している大学院生です. 専門は分散システムで,どうやったらシステムを壊れにくくできるかなどについて興味があります. 今までアウトプットの場を作りたいなーとずっと思っていて,やっと作りま…