アルゴ式の問題を解く 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)) } ということで今回はこれで👍