にあえん

主にバックエンド・インフラ周りをやってます。 あそびばはこちら -> ナナオのあそびば

paizaの練習問題を解く コンストラクタ Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 コンストラクタ | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" type Emplpyee struct { number int name string } func NewEmployee(number int, name string) *Emplpyee { return &Emplpyee{ number: number, name: name, } } func (e Emplpyee) GetNum() int { return e.number } func (e Emplpyee) GetName() string { return e.name } func main(){ var n int fmt.Scan(&n) var es []Emplpyee for i := 0; i < n; i++ { var cmd string fmt.Scan(&cmd) if cmd == "make" { var number int var name string fmt.Scan(&number, &name) es = append(es, *NewEmployee(number, name)) } else if cmd == "getnum" { var j int fmt.Scan(&j) fmt.Println(es[j - 1].GetNum()) } else if cmd == "getname" { var j int fmt.Scan(&j) fmt.Println(es[j - 1].GetName()) } } } 前回と少し異なるのは、コンストラクタ(NewEmployee)を実装したところです。 ...

2026年5月24日 · にあえん

paizaの練習問題を解く クラスの作成 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 クラスの作成 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" type Employee struct { number int name string } func (e Employee) GetNumber() int { return e.number } func (e Employee) GetName() string { return e.name } func main(){ var n int fmt.Scan(&n) var es []Employee for i := 0; i < n; i++ { var c string fmt.Scan(&c) if c == "make" { var e Employee fmt.Scan(&e.number, &e.name) es = append(es, e) } else if c == "getname" { var ind int fmt.Scan(&ind) fmt.Println(es[ind - 1].GetName()) } else if c == "getnum" { var ind int fmt.Scan(&ind) fmt.Println(es[ind - 1].GetNumber()) } } } ゲッターを実装するだけなので簡単ですね。 ということで今回はこれで👍

2026年5月23日 · にあえん

paizaの練習問題を解く 構造体の更新 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 構造体の更新 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" type User struct { nickname string old int birth string state string } func (u *User) ChangeName(nickname string) { u.nickname = nickname } func (u User) Printf() { fmt.Printf("%s %d %s %s\n", u.nickname, u.old, u.birth, u.state) } func main(){ var n, k int fmt.Scan(&n, &k) u := make([]User, n) for i := 0; i < n; i++ { fmt.Scan(&u[i].nickname, &u[i].old, &u[i].birth, &u[i].state) } for i := 0; i < k; i++ { var m int var nn string fmt.Scan(&m, &nn) u[m - 1].ChangeName(nn) } for i := 0; i < n; i++ { u[i].Printf() } } goのセッター実装は初めてだったのでよくわかりませんでしたが、ポインタレシーバをつければいいだけでしたね。 ということで今回はこれで👍

2026年5月22日 · にあえん

paizaの練習問題を解く 構造体の整列 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 構造体の整列 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import ( "fmt" "sort" ) type User struct { nickname string old int birth string state string } func (u User) Printf() { fmt.Printf("%s %d %s %s\n", u.nickname, u.old, u.birth, u.state) } func main(){ var n int fmt.Scan(&n) u := make([]User, n) for i := 0; i < n; i++ { fmt.Scan(&u[i].nickname, &u[i].old, &u[i].birth, &u[i].state) } sort.Slice(u, func(i, j int) bool { return u[i].old < u[j].old }) for _, v := range u { v.Printf() } } sortパッケージを使うと楽に実装できますね。 ということで今回はこれで👍

2026年5月21日 · にあえん

paizaの練習問題を解く 構造体の検索 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 構造体の検索 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" type Student struct { name string old int birth string state string } func main(){ var n, k int fmt.Scan(&n) s := make([]Student, n) for i := 0; i < n; i++ { fmt.Scan(&s[i].name, &s[i].old, &s[i].birth, &s[i].state) } fmt.Scan(&k) for i := 0; i < n; i++ { if s[i].old == k { fmt.Println(s[i].name) return } } } 普通に全探索で実装しました。 まぁ通ったのでいいでしょう。 ということで今回はこれで👍

2026年5月20日 · にあえん

paizaの練習問題を解く 構造体の作成 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 構造体の作成 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" type User struct { nickname string old int birth string state string } func (u *User) Scan() { fmt.Scan(&u.nickname, &u.old, &u.birth, &u.state) } func (u *User) Printf() { fmt.Printf(`User{ nickname : %s old : %d birth : %s state : %s } `, u.nickname, u.old, u.birth, u.state) } func main(){ var n int fmt.Scan(&n) users := make([]User, n) for i := 0; i < n; i++ { users[i].Scan() } for _, u := range users { u.Printf() } } ScanとPrintfをUserのメソッドとして定義しました。 これですっきり実装できましたね。 ということで今回はこれで👍

2026年5月19日 · にあえん

paizaの練習問題を解く 数の並び替え Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 数の並び替え | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 “sort"パッケージを使えば楽に実装できます。 package main import ( "fmt" "sort" ) func main(){ var n int fmt.Scan(&n) a := make([]int, n) for i := 0; i < n; i++ { fmt.Scan(&a[i]) } sort.Ints(a) for _, v := range a { fmt.Println(v) } } ソートアルゴリズム、いろいろありますが、最初から実装することないですからね。。 では今回はこれで👍

2026年5月18日 · にあえん

シンプルなdiffツール meld

こんにちは、ナナオです。 今回はdiffツールのmeldを触ります。 インストール Windowsの場合はwingetでインストールできます。 winget install meld Macの場合はbrewでインストール可能です。 brew install meld 使い方 とてもシンプルです。 対象のファイルを選択するか、「Blank Comparison」を選択するとdiffの画面に切り替わります。 それぞれのウィンドウに比較したいテキストを入力することで比較できます。 かなりシンプルなツールですが、必要な機能があるので重宝しそうです。 ということで今回はこれで👍

2026年5月17日 · にあえん

paizaの練習問題を解く 【最安値】最安値を達成するには 4 Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 【最安値】最安値を達成するには 4 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var n, x, a, y, b, z, c int fmt.Scan(&n, &x, &a, &y, &b, &z, &c) dp := make([]int, n + z) min := func(a, b int) int { if a < b { return a } else { return b } } for i := 1; i < n + z; i++ { dp[i] = 1000000 } for i := 0; i < n + z; i++ { if i >= x { dp[i] = min(dp[i], dp[i - x] + a) } if i >= y { dp[i] = min(dp[i], dp[i - y] + b) } if i >= z { dp[i] = min(dp[i], dp[i - z] + c) } } for i := n + z- 2; i > 0; i-- { dp[i] = min(dp[i], dp[i + 1]) } fmt.Println(dp[n]) } ただまだなぜこれで動くのかをちゃんと理解できていないので、繰り返しで学習しようと思います。 ...

2026年5月16日 · にあえん

paizaの練習問題を解く ifを使いますか?三項演算子を使いますか? Go編

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 ifを使いますか?三項演算子を使いますか? | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 実装は以下の通りです。 package main import ( "fmt" "strings" ) func main(){ var a int var b, c, d, e string fmt.Scan(&a, &b, &c, &d, &e) if a > 0 { fmt.Println("plus") } else { fmt.Println(a) } if b == "hoge" { fmt.Println("yes") } else { fmt.Println(b) } if len(c) == 10 { fmt.Println("ten") } else { fmt.Println(c) } i := strings.Index(d, "x") if i != -1 { fmt.Println(i) } else { fmt.Println("nothing") } if len(e) == 5 { fmt.Println("five") } else { fmt.Println(string(e[0])) } } Goは三項演算子がないので、普通にif文で実装しました。 ...

2026年5月15日 · にあえん