#はじめに
AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita
こちらの記事を参考に初心者がAt corderに挑戦します。
目的としては、就職活動でのコーディングテスト対策です。
毎日1問を目標としてコツコツやってきます
わからないことは調べる精神です。ちょっとでもわからないなぁ、と思ったことは調べて解説と参考文献を載せますので、同じ内容でわからない人がいれば参考にししてください
問題文
日本の紙幣(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の値まで処理するようにしていました。😱
勘違いミスが多い傾向。。