技術ブログ

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

競技プログラミング day4

問題

atcoder.jp

回答

n,a,b = gets.split.map(&:to_i)

def function(people,train_fare,taxi_fare)
  train_fare = caliculat_train_fare(people,train_fare)
  if train_fare > taxi_fare
    taxi_fare
  else
    train_fare
  end
end

def caliculat_train_fare(people, train_fare)
  people * train_fare
end

puts function(n,a,b)

流れ説明

1、値を受付

n,a,b = gets.split.map(&:to_i)

2、算出メソッドを作成

def function(people,train_fare,taxi_fare)
  train_fare = caliculat_train_fare(people,train_fare)
  if train_fare > taxi_fare
    taxi_fare
  else
    train_fare
  end
end

def caliculat_train_fare(people, train_fare)
  people * train_fare
end

電車賃を求めるメソッドは切り分けた。 if分で電車賃とタクシーを比較し安い方をreturnする。

3、答え表示

puts function(n,a,b)

工夫ポイント

特になし。

学びポイント

特になし。

感想

  • 困ったらif書く癖あるんだけどなんかダサくてやだな

もう少し工夫したらもっとDRYにできそう。 コード長くて複雑な処理になると無駄にメモリ食うから気をつけないと。

極限までDRYにするとこんな感じ。

n,a,b = gets.split.map(&:to_i)
puts [n * a , b].min

所有時間

15分程度