お世話になります。
昨日も当該の問題について質問させていただいたGo言語初心者です。
昨日のAtCoderBeginnerContestのB問題について、いただいた回答を元に修正したのですがアルゴリズムは合っているものの、TLEとなってしまいます。原因をご教示いただけますと幸いです。今まで計算量について考えたことがなく、これを機にこちらを読んだのですが、「自分の回答は繰り返し処理を3回行っており、文字列の長さをNとするとオーダはN^3である。」という認識でいます。(自信ありません。)計算量についての基本的な考えなどについてもご指摘いただけましたら幸いです。
問題はこちらをご覧ください。方針としては下記です。
1、reverseで配列を逆順にする。
2、changeで配列の中身を変更する(9を6、6を9に)
3、joinで配列の中身を文字列として結合する。
よろしくお願いいたします。
ご参考
https://play.golang.org/p/QdIX-xJk66o
main.go
1package main 2 3import ( 4 "fmt" 5 "strings" 6) 7 8func main() { 9 var a string = "0601889" 10 var ans string 11 //fmt.Scan(&a) 12 str := strings.Split(a, "") 13 reverse(str) 14 change(str) 15 fmt.Println(join(str, ans)) 16 17} 18 19func reverse(a []string) { 20 for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 { 21 a[i], a[j] = a[j], a[i] 22 } 23} 24 25func change(st []string) []string { 26 for index, value := range st { 27 if value == "6" { 28 st[index] = "9" 29 } 30 if value == "9" { 31 st[index] = "6" 32 } 33 } 34 return st 35} 36 37func join(str []string, ans string) string { 38 for _, v := range str { 39 ans += v 40 } 41 return ans 42} 43
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/23 09:37