【2024/11/8-11/14】の日誌の分のブログにあたります。
こんにちは。ブログを書き始めたことでコードの記憶力が上がった気がして嬉しい人です。
先週分のブログを見てたらアルゴ式の進捗が自分よりすごいブログがたくさんあって焦りました。今年はたくさん一次試験突破できそうで楽しみです。
ソフトウェア勢のブログを見ていたらアルゴ式の問題で悩んでいるブログを発見したので自分も解こうという試みと、JOIに向けて解いた問題の備忘録を載せていきます。よろしくお願いします。
「.」が「4」と認識される??Pythonさんがそんなことする訳…
早速問題を解こうとして、
はいはいまとめ問題っていうのは今までの問題をもとに考えれば解けるようになってんだよ余裕ー
ってなるはずだったんですけど見事に不正解を二連続でくらって落ち込みました。
答えと出力を確認してみると「4」の判定回数だけが一回多いということだった。意味がわからん。
故に、GPTさんのお力を借りてみたのですが、
…だとよ、
うっそだーーーーー
(GPTさんによる代替案。仕組みはよくわからない)
そーんな訳…
…は普通に無かった。(上から四行目が102になれば成功だった)
本心的には無くて良かった。でも流れ的にはあってもよかった。
でもそれはそれでGPTさんへの疑いが出てくるのでプラマイがゼロな気がする…
などと、私はもうめんどくさくなったのでこれ以上誰も疑いたくないので、この問題を追求するのはやめることにした。原因わかった人がいたらコメントか自分の日誌にでも書いてください。見にいきます。
今回学んだコード
isdigit (GPTさんによると[is digit「数字である」]からきたらしいです)
〈使い方〉
「数字か確認したい文字」.isdigit()
GPTさんによると文字型でも確認してくれるらしいです。便利かも
ダイバーシティが怒りそうな王国
解いた問題:B-Taro
推しの名前が多分太郎なので、この問題を見つけた瞬間「おっ、」ってなりました。頑張っていきたい。
問題文読みました。要するに一つの家の中の長男をひとつづつ決めろや的な話な感じだと思いました。
NとMは繰り返しに使えという優しい数字ですね。
縦に不特定多数な入力を受け取る
縦にいっぱいあるやつはfor文で二つを一つの要素として一度受け取ってからリストにぶち込む感じらしいです。互いのタイプ(数字型とか)が違ったらまずどちらも文字型で受け取ってから数字で受け取りたい方を数字型に変換するみたいです。
今回はこのように入力しました。
for _ in range(M):
A, B = input().split()
A = int(A)
deta.append((A, B))
(A,Bがどちらも数字の時はmapなんちゃらのみでok)
取り出すときはA,B = 「リスト名」で取り出すみたいです。
こので入力で、○番目の家で生まれたやつが長男だった場合のみ、「長男産まれたやでリスト」に○番目と追加するという方法でやって正解しました。
JOI二次予選の問題
修学旅行が終わって死にそうなのでやります。
解いた問題:B-買い物2
このAは先々週くらいにやりましたが、入力される数字の数がそれよりもものすごく多くなっていておどろおどろきました。
三桁の横の入力できるかやってみたらできました。嬉しい。
そしてさっきブログで書いたことを活用する時が来た。(縦に不特定多数な入力)
とりあえず入力を受け取れるようにしてから問題を読んで、#でそれぞれの記号が表すことをメモります。そして一人一人の客がどれくらいお金を使ったのかを出力しろということがわかりました。
あと問題文にiとかjとかを書いてくれているのでfor文を使うんだろうなーということとか、種類が違っても値段は変わらないということを理解しました。
途中で問題の意味の履き違えはあったものの、各コードに#で補足を加えながらとりあえず例題は自力でどうにかできました。国語力が試されました。
入力が長すぎてコードの半分を占めている…
結果を見ると、やはりTLEさん(処理時間多すぎ)が顔を覗かせてきました。ではここから、重くならないためにはどうすればいいのかに移ります。
前回(A問題)をした時はset様に頼ったのですが今回は順番をバリに使うのでそうもいきません。なのでGPT様に頼ります。
ありがたいGPT様のお言葉によると、「商品を一つづつ確認するから時間がかかるねん、あらかじめセールする商品決めとけや」だそうでした。さすがGPT様!!!普通に無理です!!!
すごい開き直ってくる!逆に清々しいです!
と、ここでプログラミングブームが過ぎ去ってしまったので、来週はどうしようって感じです。多分二時予選からはしーぷらが生きる時代になりそうですね。
おわり
コメント