4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【電脳少女プログラミング2088 ─壊レタ君を再構築─】D:カジノをやってみた。

Last updated at Posted at 2025-02-03

はじめに

paizaの新作プログラミングゲーム【電脳少女プログラミング2088 ─壊レタ君を再構築─】カジノ(paizaランク:D相当)をやってみました。

問題

あなたはカジノにやってきました。
カジノで使われるチップは 1 ドルのもの 5 ドルのもの 10 ドルのものがあるようです。

各チップの枚数が 1 ドル, 5 ドル, 10 ドルの順で改行区切りで与えられるので合計で何ドルかを出力してください。

解答

単純な書き方

package main

import "fmt"

func main() {
    var n [3]int
    fmt.Scan(&n[0], &n[1], &n[2])
    fmt.Println(n[0] + 5*n[1] + 10*n[2])
}

解説

  • fmt.Scan()を使用して、標準入力から3つの整数を読み取ります。
    • n[0]:1ドルチップの枚数
    • n[1]:5ドルチップの枚数
    • n[2]:10ドルチップの枚数
  • 合計金額を計算するために、それぞれのチップの枚数にその価値を掛けます。
    • 1ドルチップ:n[0] * 1
    • 5ドルチップ:n[1] * 5
    • 10ドルチップ:n[2] * 10
  • それらを合計し、fmt.Println()で出力します。

bufioを用いて入力を行う場合

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)

    var n [3]int
    for i := 0; i < 3; i++ {
        scanner.Scan()
        n[i], _ = strconv.Atoi(scanner.Text())
    }
    
    fmt.Println(n[0] + 5*n[1] + 10*n[2])
}

解説

  • bufio.Scannerを使用して、標準入力から行単位でデータを読み取ります。
  • ループを使って3回scanner.Scan()を呼び出し、それぞれの入力行を取得します。
  • strconv.Atoi()で文字列を整数に変換します。
  • 合計金額の計算と出力は前の例と同じです。

今回学んだこと

  • 標準入力からの値の受け取り方法
    基本的なfmt.Scan()に加え、
    bufio.Scannerでの入力受取を実装した。
    実装速度において、小規模データではほぼ同じだが、大規模データ(数百〜数万の入力)では、bufioが数倍〜数十倍高速になる。

↓ fmtとburioの違い

  • 文字列から数値への変換
    文字列→数値:strconv.Atoi()
    数値→文字列:strconv.Itoa()

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?