こんにちは、ナナオです。

前回に引き続き競プロを実施していきたいと思います。

今回の問題は以下です。

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))
}

これでいいですね。

ということで今回はこれで👍