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