アルゴ式の問題を解く Go 3 の倍数の個数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数の個数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) c := 0 for i := 3; i <= n; i++ { if i % 3 == 0 { c++ } } fmt.Println(c) } 3以上の時にループするようにしました。 ということで今回はこれで👍
アルゴ式の問題を解く Go 3 で割れるか
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 で割れるか | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 { fmt.Println("Yes") } else { fmt.Println("No") } } ということで今回はこれで👍
アルゴ式の問題を解く Go 奇数と偶数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 奇数と偶数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 2 == 0 { fmt.Println("even") } else { fmt.Println("odd") } } 単純な分岐で実装できました。 ということで今回はこれで👍
アルゴ式の問題を解く Go 何個あまるか
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 何個あまるか | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var a, b int fmt.Scan(&a, &b) fmt.Println(a % b) } ということで今回はこれで👍
アルゴ式の問題を解く Go できるだけ買う
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 できるだけ買う | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var a, b int fmt.Scan(&a, &b) fmt.Println(a / b) } ということで今回はこれで👍
アルゴ式の問題を解く Go ゼロサプレス
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 ゼロサプレス | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var s string fmt.Scan(&s) t := s for i := 0; i < len(s); i++ { t = s[i:] if s[i] != '0' { break } } if t == "0" { fmt.Println() } else { fmt.Println(t) } } 0の場合だけ例外として何も出力しないようにしています。 ということで今回はこれで👍
アルゴ式の問題を解く Go リーディングゼロ
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 リーディングゼロ | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n string fmt.Scan(&n) t := n for i := 0; i < 10 - len(n); i++ { t = "0" + t } fmt.Println(t) } 最初からstringでnを読み込めば、strconvを呼び出す必要もないですね。 ということで今回はこれで👍
アルゴ式の問題を解く Go 3 桁区切り
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 桁区切り | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" "strconv" ) func main() { var n int fmt.Scan(&n) s := strconv.Itoa(n) // カンマを付与する var t []rune cnt := 0 for i := len(s) - 1; i >= 0; i-- { if cnt % 3 == 0 && cnt > 0 { t = append(t, ',') } t = append(t, rune(s[i])) cnt++ } // 逆にする var r []rune for i := len(t) - 1; i >= 0; i-- { r = append(r, t[i]) } fmt.Println(string(r)) } 逆にするループは削れそうです。 package main import ( "fmt" "strconv" ) func main() { var n int fmt.Scan(&n) s := strconv.Itoa(n) // カンマを付与する var t string for i := 1; i <= len(s); i++ { t = string(s[len(s) - i]) + t if i % 3 == 0 && i < len(s) { t = "," + t } } fmt.Println(string(t)) } これでいいですね。 ...
アルゴ式の問題を解く Go 塩基対の作成
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 塩基対の作成 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int var s string fmt.Scan(&n, &s) replace := func (s string, i int, t rune) string { runes := []rune(s) runes[i] = t return string(runes) } for i := 0; i < n; i++ { switch s[i] { case 'A': s = replace(s, i, 'T') case 'T': s = replace(s, i, 'A') case 'G': s = replace(s, i, 'C') case 'C': s = replace(s, i, 'G') } } fmt.Println(s) } replace関数の効率は普通に悪い気もしますが、まぁこの問題であれば解けたのでいいでしょう。 最初から[]runeに変換しておけばもっと効率がいいですね。 package main import ( "fmt" ) func main() { var n int var s string fmt.Scan(&n, &s) runes := []rune(s) for i := 0; i < n; i++ { switch s[i] { case 'A': runes[i] = 'T' case 'T': runes[i] = 'A' case 'G': runes[i] = 'C' case 'C': runes[i] = 'G' } } fmt.Println(string(runes)) } ということで今回はこれで👍
アルゴ式の問題を解く Go 書き換え回数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 書き換え回数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int var s, t string fmt.Scan(&n, &s, &t) c := 0 for i := 0; i < n; i++ { if s[i] != t[i] { c++ } } fmt.Println(c) }