2022-03-01から1ヶ月間の記事一覧

(備忘録)問題解決のための「アルゴリズム数学」〜 3

問題 atcoder.jp 自分の回答 それぞれの色の枚数を数えて、それぞれの色を2枚選ぶ方法を算出して最後に合計を出力している (昨日学習したtallyが役に立つ) gets h = gets.split.map(&:to_i).tally arr = [] h.each do |k, v| arr << v * ( v - 1 ) / 2 if …

(備忘録)問題解決のための「アルゴリズム数学」〜 2

問題 atcoder.jp 自分の回答 各値段の数をcountし、最後に500円になるパターンを積の法則を利用して算出している。 countを4回やっている部分どうにかしたいけど思い付かなかった gets price = gets.split.map(&:to_i) a = price.count(100) b = price.count…

(備忘録)問題解決のための「アルゴリズム数学」〜

問題 atcoder.jp 自分の回答 inject便利 Enumerable#inject (Ruby 3.1 リファレンスマニュアル) puts (1..gets.to_i).inject(:*)

AtCoderをやって18

問題 atcoder.jp 自分の回答(不正解) これだと1回多くカウントされちゃいますね。 n, x = gets.split.map(&:to_i) a = gets.split.map(&:to_i) b = 0 cnt = 0 a.each do |i| if b <= x b += i cnt += 1 end end puts cnt 他の方回答 N,X = gets.chomp.spli…

AtCoderをやって17

問題 atcoder.jp 模範回答 累積和の問題だったのですが全く分からず、、、 色々なやり方があったのですが、これがとりあえずシンプルでわかりやすかった 累積和勉強します N = gets.chomp.to_i ws = gets.split(' ').map(&:to_i) answer = [] N.times do |i|…

AtCoderをやって16

問題 空港 A, B, C があり、それぞれの空港の間では、双方向に飛行機が運航しています。 空港 A, B 間の飛行時間は片道 P 時間、空港 B, C 間の飛行時間は片道 Q 時間、空港 C, A 間の飛行時間は片道 R 時間です。 いずれかの空港からスタートして他の空港に…

(備忘録)AtCoderをやって15(Guidebook)

問題 atcoder.jp 自分の回答(他の方の回答参照しつつ) まずsort_byの使い方で苦戦しました。さらに番号を要素にどう持たせて出力するかで悩みました。 空の配列を用意して、timesのブロックで渡した引数を配列に入れていけば良かったですね。 その後sort_by…

(備忘録)AtCoderをやって14

問題 atcoder.jp 他の回答 今回は問題の趣旨よく分からんかったので回答見ながら学習(とは言っても30パーセントくらいの理解) 累積和の理解が出来ず n,m = gets.split.map(&:to_i) x = 1 y = n m.times do l,r =gets.split.map(&:to_i) x = [x,l].max y …

(備忘録)AtCoderをやって13

問題1 A 歳の高橋君が観覧車に乗ろうとしています。 この観覧車は、13 歳以上が乗るには B 円 (B は偶数) かかりますが、6 歳以上 12 歳以下の人はその半額で乗ることができ、 さらに 5 歳以下の人は無料で乗ることができます。 高橋君が観覧車に乗るには何…

(備忘録)AtCoderをやって12(Dice and Coin)

問題 下記参照 atcoder.jp 自分の回答(不正解) N, K = gets.chomp.split.map(&:to_i) arr = [] i = N + 1 if N <= K # 分からなかった else (1..N).each do |n| if n == 1 probability = Rational(1, N) * Rational(1, 2)**(i) arr << probability else pr…

(備忘録)AtCoderをやって11

問題 A, B, C からなる長さ N の文字列 S と、1 以上 N 以下の整数 K が与えられます。 文字列 S の K 文字目を小文字に書き換え、新しくできた S を出力してください。 atcoder.jp 自分の回答 絶対にもっといい回答あると思ったけど思い付かなかった n, k =…