こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
塩基対の作成 | アルゴ式
実装 以下のように実装しました。
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)) } ということで今回はこれで👍