LoginSignup
1
0

More than 1 year has passed since last update.

【At Corder】【初心者】ABC085C - Otoshidama をRuby で解いてみた

Posted at

はじめに

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita

こちらの記事を参考に初心者がAt corderに挑戦します。
目的としては、就職活動でのコーディングテスト対策です。
毎日1問を目標としてコツコツやってきます:thinking:

わからないことは調べる精神です。ちょっとでもわからないなぁ、と思ったことは調べて解説と参考文献を載せますので、同じ内容でわからない人がいれば参考にししてください:baby:

問題文

日本の紙幣(10000,5000,1000円)をN枚使ってY円になるか?

成約

  • $1 ≤ N ≤ 2000$
  • $1000 ≤ Y ≤ 2 \times 10^7$
  • $N$は整数である
  • $Y$は1000の倍数である

入力

N Y

出力

$N$枚のお札の合計金額が$Y$円になることがありえない場合は -1 -1 -1 と出力

あり得る場合は組み合わせの一例をxを10000円、yを5000円、zを1000円とするとx, y, zを空白で区切って出力せよ。複数の可能性が考えられるときはそのうちどれを出力してもよい。

入力例

9 45000

出力例

4 0 5

回答

N, Y = gets.split.map(&:to_i)

for x in (0 .. N)
  for y in (0 .. N) 

    z = N - (x + y)
    break if z < 0 

    sum = 10000*x + 5000*y + 1000*z     
    if sum == Y 
    printf("%d %d %d", x, y, z)
    exit
    end

  end           
end

puts("-1 -1 -1")

感想

今回はそこまで苦戦せず解くことができました🥳

最初は勘違いでzを0~Nの値まで処理するようにしていました。😱

勘違いミスが多い傾向。。

参考文献

【Ruby】exitでプログラムを終了させる【exit!やreturnとの違い】 | 「ポテパンスタイル」

1
0
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
1
0