技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

競技プログラミング day7

問題

atcoder.jp

回答

# require "pry"
# ----------------------------------------------------------
# ■ 問題
# https://atcoder.jp/contests/abc119/tasks/abc119_b

# ■ 前提条件
# 1. 単価 -> JPY ot BTC
# 2. 1.0 BTC = 380000.0円

# ■ 制約
# JPY -> 1 ≤ x i ≤ 10^8
# BTC -> 0.00000001 ≤ x i ≤ 100.00000000

# ■ 流れ説明
# 1. 入力値を受け付ける(何人の親戚からお年玉を受け取ったのか)
# 2. 日本円で受け取ったのかBTCで受け取ったのかを判定
# 3. 日本円で受け取った合計値とBTCで受け取った合計値を計算するメソッドをそれぞれ作る
# 4. BTCを日本円に換算するメソッドを作成
# 5. 日本円ベースで合計値を算出してputsする

# ■入力例
# n = 2
# x1 = 10000, u1 = JPY
# x2 = 0.10000000, u2 = BTC

# ■ 出力例
# 48000.0
# ----------------------------------------------------------

#  1. 入力値を受け付ける(何人の親戚からお年玉を受け取ったのか)
n = gets.chomp.to_i

sum = 0

n.times {
  amount_money,type = gets.split

  # 2.日本円で受け取ったのかBTCで受け取ったのかを判定
  # 3. 日本円で受け取った合計値とBTCで受け取った合計値を計算するメソッドをそれぞれ作る
  case type
  when "JPY"
    sum += amount_money.to_i
  when "BTC"
    # 4.BTCを日本円に換算
    sum += amount_money.to_f * 380000
  end
}

# 5. 日本円ベースで合計値を算出してputsする
puts sum

学びポイント

N回数分だけ、XnとUnの入力値を受け取る方法に迷った。結局n.timesで実装は出来た。

感想

case文で条件分岐するのはよかったと思う。メソッドに切り分ける方法でもよかったかもしれない。

所有時間

30分