1ヵ月腕立て伏せガチチャレンジ Day 1

前回の記事は以下から飛べます。

上腕あいうえお筋トレ - volcano-tofu’s blog

volcano-tofu.hatenablog.com

 

 

 

 

前回の記事では正直物足りなく

  • デクラインプッシュアップ20回
  • リバースプッシュアップ(椅子)10回
  • 3分腹筋×4セット

を最後の追い込みで取り組みました。

 

 

本記事からは「筋肉をしっかり追い込めているのか?」というのを軸に筋トレに励んでいきたいと思います。

というのも、「筋トレしているんだけど、効いているのかよくわからない・・・」みたいな筋トレごっこに陥っているのではないのかな?と感じることが多くなったからです。

 

 

なので、いつも行っているトレーニングに以下のことを意識してみました。

  • 筋肉の伸縮時にその状態をキープし、使われている筋肉を感じ取る
  • 1、2秒以上かけてゆっくり動作を行う(スロトレに近い)

今回のタイトルにある通り腕立て伏せに関してですが、極力腕の力を抜くように上下運動をしてみると胸筋が使われている感じがしました。

胸を降ろした状態をキープするだけでもかなり胸に効いた感じがありました。

 

また、アブローラーに関してですが、腰を痛める可能性が高いので今後はあまり取り組まないことにしました。やりたいときに行う感じになると思います。

 

 

 

 

 

とゆーかさ、

Q.タイトルの1ヵ月チャレンジって何?

 

 

▼1ヵ月で以下の動画を完走するチャレンジです。(完走は3分20秒)

www.youtube.com

因みに今日の段階では 1:07 あたりまでは行けたと思います。(最後の方、フォームはやや崩れていましたが・・・)

正直なところ、非現実的な目標ではありますが、筋トレ初心者が1ヵ月でどれくらいまで耐えられるようになるのか頑張っていきます。

 

ただし!毎日腕立て伏せを行うというわけではありません。

日によっては追い込み過ぎて筋肉痛が酷くなる可能性があるので、怪我をする恐れがある場合は極力避けるようにします。

理想はとしては、トレ1日休み2日トレ1日→・・・、のように2日休みを設けられたら良いかな、と考えています。(翌日もできそうであればガンガンやります)

 

皆さんも上記の腕立て伏せチャレンジをやってみましょう。

折角よくわからない人の記事を読んでいるわけですから。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

 

■筋トレメニュー 22/01/08

 

▼1.ストレッチ

www.youtube.com

 

 

▼2.軍人ver腕立て伏せ

www.youtube.com

1セットのみ 初日1:07

試し撮りあります。興味ある人がいればDMにてご連絡くだされば送ります()

 

 

▼3.スロトレ

www.youtube.com

1セット

スクワット ➡ プッシュアップ ➡ クランチ、

レッグランジ ➡ ベントオーバーアームプル ➡ ヒールタッチクランチ

スロトレで行う。肝心の腕立て伏せは後半膝つきました()

ゆっくり行うことで使っている筋肉を意識化することができた気がする。

特にランジは負荷のかけ方を理解できた気がします。

 

 

▼4.腕立て伏せ(初級編)

www.youtube.com

2セット

ワイド、レギュラー、ナロー、ダイヤモンド、ワイド(ネガティブオンリー)の順

膝つき。負荷が小さいので丁寧にやってみた。

なるべく腕の力に頼らず胸を意識しまくりました。

 

 

▼5.腕立て伏せ(中級編)

www.youtube.com

2セット

ツイスト、リバース、ハーフ、ネガティブ、パイクの順

折角なので中級編もやってみた。後半は膝をつきました。

部分部分の胸筋に効いてる感じがあった。今後はこれを取り組みたい。

 

 

▼6.腕立て伏せ(初級編)ver2

www.youtube.com

1セット

レギュラー、ナロー、ツイスト、パイク、レギュラー(ネガティブオンリー)

〆。

ツイスト、パイクといった見慣れないメニューがあって効いているのかわからなかった。

後で調べておく。

このあと用事で2時間程休憩します。

 

 

▼7.腕立て伏せ(プッシュアップバー付)

www.youtube.com

こちらの動画に合わせて行いました。

1セット目でバー付はギブ。1,2セットぐらい膝なしで行い、以降は膝つき。

最後のセットだけバー付。

 

 

▼8.腹筋

www.youtube.com

1セット

ゆっくり行い一回一回の質を意識した。

後半の種目で腰が少し痛くなった。フォームを改善する必要があるだろう。

動画自体は昔から知っていてあまり初心者向きじゃないから好きじゃないんだけど、ある程度まで耐えることができた。シンプルでいいかも。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

◀反省など▶

 

・動作をゆっくり行うことで、筋肉が効いている・効いていないが理解しやすくなった。(今更だけどね)

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

日付を跨ぎそうなのでさっさと上げることにします。実は明日1/9はぼくの誕生日でもあり、成人式の日でもあります。

うんちぶりいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいうんつんつtぬtぬtぬtぬtんつんt

 

上腕あいうえお筋トレ

前回(2日前)の記事はこちらから↓

いつもの筋トレメニューにアブローラーを追加してみた - volcano-tofu’s blog

volcano-tofu.hatenablog.com

 

 

 

 

2,3日前に筋トレをしたので一日休みを挟んで筋トレを行いました。

ジムでのトレーニングと違い、自重で筋肥大をするためにはやはり回数を多く行わないと厳しいようです。まぁ当たり前といえばそうだし、直感的でもある。

とはいえぼくは大した筋力はないので1,2年ほどは自重に専念した方がよさそう。

 

今回は腕立て伏せをメインで取り組んでみました。結果としては全身が疲れてその後のトレーニングが鬼でしたね・・・・・・・。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

 

■筋トレメニュー 22/01/05

 

▼1.ストレッチ

【超簡単】世界で一番温まる簡単ウォーミングアップ(動的ストレッチ=ダイナミックストレッチ)で運動不足も解消です。 - YouTube

いつもの

 

▼2.NHK腕立て伏せ 1/2

[みんなで筋肉体操] シーズン1 腕立て伏せ(1/2) | NHK - YouTube

一発目に挟んだおかげで無事やり遂げました。やったぜ。

というかこの時点で既に腕・胸に効きすぎてヤバイ

 

▼3.NHK腕立て伏せ 2/2

[みんなで筋肉体操] シーズン1 腕立て伏せ(2/2) | NHK - YouTube

腕立て伏せをハイスピードで行う。

インターバルは2分程とってから行いましたが、ふつーにきつい

後半なんか一回降ろして上げて少し休んで一回降ろして――になりました()

 

▼4.NHK腕立て伏せ 1/2

[みんなで筋肉体操] シーズン1 腕立て伏せ(1/2) | NHK - YouTube

再放送。ちゃんと追い込まなあかんわな、と感じたのでやってみましたが、6回7回ぐらいでギブ。

膝ついてもギブ()この時点で全身疲れてます・・・

 

▼5.NHK腕立て伏せ 2/2

[みんなで筋肉体操] シーズン1 腕立て伏せ(2/2) | NHK - YouTube

本当に追い込めているのかな?と疑問になってたのでやってみた。

しんだ

 

▼6.アブローラー

全身疲れすぎていたのか、上手くできませんでした。

2回膝コロ→8回膝コロンで計10回だけやった。

 

▼7.腹筋下部

【初級編】2分の簡単な下っ腹筋トレでぽっこりお腹を解消!女性のダイエットメニューにも!【自獣トレ⑤】 - YouTube

身体休め用に使いました

 

▼8.腹筋

腹筋トレーニングはこれで十分 - YouTube

まさかの脂肪燃焼系でしんだ

腕がしんでいる状態でこれはマジでつらかったです

 

▼9.足上げクランチ+レッグレイズ

【1日3分】2種目でシックスパックを作る腹筋トレーニング! ABS WORKOUT - YouTube

こちらも身体休め用として使いました

前回ので結構腹直筋にダメージ入っててきつかった

 

▼10.腹筋

腹筋トレーニングはこれで十分 - YouTube

もう一回やった、が

しにました(10秒やって少し休憩して5秒やるみたいな感じ)

 

▼11.背筋

背筋のトレーニング|初心者向け8種目【4分間】 - YouTube

やっと背筋への効かせ方のコツを掴めたような気がする

 

▼12.腕立て伏せ

【初心者向け腕立て伏せ】大胸筋を鍛えるトレーニングで胸を大きくしよう!(3分) - YouTube

最後の追い込み用

 

▼13.HIITスクワット

【静かにできるHIIT】スクワットだけ!!脂肪がガンガン燃える自宅トレ!! - YouTube

〆。

上半身が疲れすぎていたので、下半身HIITを行いました。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

◀反省など▶

 

・トレーニングの最初に腕立て伏せを持ってきた影響で後半のトレーニングがより一層厳しくなってしまった。

・腕と胸は極限まで追い込んだつもりなので、しばらくは腹筋・背筋・脚などを攻めていきたい。

・腕立て伏せ後に腹筋をやる、よりかは腕立て伏せならその日は腕立て伏せだけ。別日に腹筋だけ。のようにわけた方がよさそう。(それはそう)(尚更負荷が高い種目なので)

・脂肪燃焼系の腹筋トレが意外ときつかった。身体が疲弊している状態でやるべき種目ではないかも。

・なんだかんだ、最初の腕立ての影響が半端なく、腹筋の効率が悪くなった気がする。下部はバチバチに効いてはいるんだけど・・・。

・うんち

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

明日はHIITや脂肪燃焼系をやりたい。

余談ですが、今使用しているSAVASプロテインが切れかけなので、VALXプロテインを購入しました。3袋12312円です。草

いつもの筋トレメニューにアブローラーを追加してみた

昨日書いた記事はこちら↓

新年明けましておめでとうございます。 - volcano-tofu’s blog

 

 

 

 

 

年末バイトを納めたよ。

 

上記の記事は筋トレ初心者がただただ筋トレしたよ!だけの意味の分からん記事をtwitter上に投稿するのもなぁ、、と感じたので、見たい人だけ見て頂ければなと思います。

いつもより二倍三倍多めに筋トレしただけです。

 

で、この記事もただただ筋トレをしただけなんですけども、某パワー笑顔系ボディービルダーの方が動画内で「記録をつける」ということを勧めていたので、メニューを多めに取り組んだり、書く気があるときに記録をつけていこうと思います。

 

前回(昨日)取り組んだメニューは下記又は上記からどうぞ。

新年明けましておめでとうございます。 - volcano-tofu’s blog

 

あと、マウスのクリックの調子が非常に悪いので文字を大きくするとかがマジメンドイ

のでご了承ください。ご理解の程よろしくお願いしまする。

 

 

 

 

 

Q.どんなトレーニングが欲しいの?

これに関しては前回の記事を見て頂きたいわけですが、面倒くさいことでしょう。

  • 腹筋を割りたい(体脂肪も落としたい)
  • 腕を太くしたい
  • 背筋を鍛えたい
  • 体幹を鍛えたい

の4つが現時点の壁というか、目標というか、まぁ特には定まっていないのですがそんな感じだと思ってください。

前回(昨日)はバイシクルクランチを多めに取り組んでみました。

バイシクルクランチはぼくの弱い腹筋の下部体脂肪燃焼効果があることが取り入れた理由です。

ですが、何回も身体的に追い込んで精神的にも追い込まれるトレーニングもそれはそれで悪くはないですが、家でも簡単に腹筋一撃の負荷が高く、腕立て伏せの様に簡単そうだが実は高負荷でかなりの筋力を要するトレーニングはないかな?

――と、色々探っていたらアブローラーが該当したので、今回は膝コロ→膝コロンで限界まで追い込んだ後に 腹筋下部→上部→バイシクルクランチ という順番で行ってみました。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

■筋トレメニュー 22/01/03

 

▼1.ストレッチ

【超簡単】世界で一番温まる簡単ウォーミングアップ(動的ストレッチ=ダイナミックストレッチ)で運動不足も解消です。 - YouTube

いつもの

 

▼2.アブローラー

参考動画なし。

メニュー:膝コロ10回→膝コロン5回

 

まず膝コロ10回をできる範囲でやりきる。最初の3回は地面と平行(胸があたるレベル?)ぐらいまで行けたが、残りはちょっと進んで終わりor戻れず膝コロン状態。

その後、膝コロンができない状態で無理やり行って、腹筋をしばき倒しました()

 

▼3.腹筋下部

【初級編】2分の簡単な下っ腹筋トレでぽっこりお腹を解消!女性のダイエットメニューにも!【自獣トレ⑤】 - YouTube

アブローラー後すぐに行いました。インターバルは限りなく0に近いです。

 

▼4.足上げクランチ+レッグレイズ

【1日3分】2種目でシックスパックを作る腹筋トレーニング! ABS WORKOUT - YouTube

こちらもインターバル0に近い状態で行いました。ふつーに死にました。

 

▼5.バイシクルクランチ

【シンプル筋トレ】5分間のバイシクルクランチで腹筋・腹斜筋を一緒にしばきましょう - YouTube

しんだ もうぼくはどこにもいない さようなら

 

▼6.背筋

背筋のトレーニング|初心者向け8種目【4分間】 - YouTube

相変わらず背筋が弱すぎでこれですら汗かいちゃう。

一番最後のプランクがキツイのは効いてるってことでおkなん?

 

▼7.HIITスクワット

【静かにできるHIIT】スクワットだけ!!脂肪がガンガン燃える自宅トレ!! - YouTube

〆、のつもりでした。脂肪燃焼効果重視でスクワット×HIITで追い込んでいきます。

最終的に小鹿が生まれました

 

▼8.NHK腕立て伏せ

[みんなで筋肉体操] シーズン1 腕立て伏せ(1/2) | NHK - YouTube

〆、のつもりでした(再放送)

HIITが思った以上にきつく、よくわかんないんですけど当時のぼくは「心拍数が絶好調なら腕立て伏せした方がよくね?」と思考して腕立て伏せしたみたいです。

膝なし15回→膝つき4回 までは上手くいったんですけど、最後の一回が上がりませんでした。うんこ。うんっちちんちんちtにtにtにちにあんすdないあ「wdd

 

精進いたします・・・。

 

▼9.アームカール、ハンマーカール、リフトカール

今度こそ〆。使用器具はダンベル5kg一個のみ(5kgと10kgがそれぞれ一個しかないんです)

 

トレ方法とかは前回の記事をご覧ください。申し訳ないんですけどマウスの調子が本当に悪いんです。

15秒のところを10秒に変えたので、今回はn(3≦n≦7,n∈ℕ)回やって10秒かけて下げる、という方法にしました。

ついでに2セットやってみた。普通にきついが、本当に効いているのかが疑問に思えてきた。

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

・反省点

うんちぷりぃぃぃぃぃぃいいいいいい

まぁ、背筋が弱いのはマジで一から鍛えていくしかないんで、頑張ります()

最終的には懸垂がすいすいっーとできればまじうれしーってぐらい

うんち

腕立て伏せをもっとできるようになりたい。

なんだかんだ「腕を強くする方法」「胸を強くする方法」とかを参考にしてもえぐなぁ!?ってレベルで腕立て伏せ類をぶち込んできているし、その上回数も半端ないし・・・という感じで、初心者お断りが多いんですよねぇこれが。

うんち

腕を鍛えつつ、胸も鍛えつつ、背筋も鍛えつつも、やっぱり主に鍛える部分は腹筋かなと。

うんちっちー

アブローラーは勿論、膝コロでも回数を多く熟したいし、もっともっと筋力をつけて様々なメニューを取り組んでいきたいですね。

うんこ

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

とまぁ、誰がこんな記事を読むんですかねぇ

ちんこちんこちんこちんこぽりぽりんほほほほおおおおおおおおおおおおおおおおおおおおwwwwwwwwwwwwwwwwwwwwww

新年明けましておめでとうございます。

明けましておめでとうございます。

新年を迎えたので、いつもより倍程多めに筋トレしてみました。

めちゃ疲れました。

今年も何卒よろしくお願いします。

 

さて、男なら、男ならば、誰しもが思うことでしょう。腹筋を割りたい!と。

ですが、腹筋を割るにしても”ある程度の筋力が必要”だったり、”体脂肪を落とす必要”があったりで中々難しいものです。

 

また、ぼくは腹筋の下部をあまり鍛えていないのもあるので、下部を鍛えつつ体脂肪燃焼に効果があるといわれているバイシクルクランチを多めに取り入れてみました。

 

以下に筋トレに用いた動画を載せていきます。筋トレに関しては知識皆無の初心者なので「筋トレの順番はこうしたらいいよ!」などがございましたらTwiiter(@makudo_nald)のDMメッセージまでお越しください。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

 

■午前の筋トレ

 

▼1.ストレッチ

【超簡単】世界で一番温まる簡単ウォーミングアップ(動的ストレッチ=ダイナミックストレッチ)で運動不足も解消です。 - YouTube


▼2.ストレッチ

【自宅で筋トレ】世界で一番楽な筋トレ&有酸素運動で全身10種目の10分間です。楽に脂肪燃焼、肩こり解消、腰痛解消、運動不足解消したい方におすすめです。 - YouTube

普段はストレッチをしないので多めに取り入れてみた。意外と汗かく。

 

▼3.腹筋下部トレ

【初級編】2分の簡単な下っ腹筋トレでぽっこりお腹を解消!女性のダイエットメニューにも!【自獣トレ⑤】 - YouTube

最近やり始めたメニューで気に入ってる動画

 

▼4.5分バイシクルクランチ

【シンプル筋トレ】5分間のバイシクルクランチで腹筋・腹斜筋を一緒にしばきましょう - YouTube

 

▼5.ひざつき腕立て伏せ

【初心者向け腕立て伏せ】大胸筋を鍛えるトレーニングで胸を大きくしよう!(3分) - YouTube

休みなしのせいできつい

 

▼6.背筋

背筋のトレーニング|初心者向け8種目【4分間】 - YouTube

背筋はクソ雑魚なのでこれですら汗かいちゃう;;

 

▼7.プランク

ぽっこりお腹が解消する初心者さん向け3分間プランク! - YouTube

 

▼8.3分腹直筋トレ

【1日3分】2種目でシックスパックを作る腹筋トレーニング! ABS WORKOUT - YouTube

今思えばこの後にプランクをすればよかったのでは?と反省

 

▼9.5分バイシクルクランチ

【シンプル筋トレ】5分間のバイシクルクランチで腹筋・腹斜筋を一緒にしばきましょう - YouTube

本日2回目

 

▼10.HIIT

【世界最速で痩せる】筋トレ&有酸素運動(HIIT)を全身9種目6分間です。飛ばないのでマンション・アパートOKです。一緒にカッコ良く筋肉を引き締めましょう。 - YouTube

〆。腕と脚が死んだ

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

反省としては、腹筋が多い割には飛び飛びでトレーニングしているので、まとめた方がいいのかな?と思った。

思ったより背筋が弱くて死にそう。

脚、腕のトレが貧弱なので午後はこれを追加したい。

あと、今後〆に余裕があればHIITを取り入れたい。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

 

■午後の筋トレ

 

▼1.ストレッチ

【超簡単】世界で一番温まる簡単ウォーミングアップ(動的ストレッチ=ダイナミックストレッチ)で運動不足も解消です。 - YouTube

 

▼2.腹筋下部トレ

【初級編】2分の簡単な下っ腹筋トレでぽっこりお腹を解消!女性のダイエットメニューにも!【自獣トレ⑤】 - YouTube

腹筋下部をしばきまくる

 

▼3.3分腹直筋トレ

【1日3分】2種目でシックスパックを作る腹筋トレーニング! ABS WORKOUT - YouTube

腹筋上部をしばきまくる

 

▼4.5分バイシクルクランチ

【シンプル筋トレ】5分間のバイシクルクランチで腹筋・腹斜筋を一緒にしばきましょう - YouTube

本日3回目

 

▼5.腹筋・脚・腕、胸・背筋のスロトレ

【スロートレーニング】超簡単筋トレ基本6種目から始めよう。FUJIWARA原西さんが行

っていた3種目+3種目です。 - YouTube

腕立て伏せのスロトレで毎回死んじゃう。もうトラウマです・・・

 

▼6.腕立て伏せ

[みんなで筋肉体操] シーズン1 腕立て伏せ(1/2) | NHK - YouTube

更に追い込んでみた(膝なし15回終わったあとちょっと休憩しました)(死ぬ)

 

▼7.背筋

背筋のトレーニング|初心者向け8種目【4分間】 - YouTube

汗ヤバイ

 

▼8.スクワット、ランジ

2分4種スクワットで鍛えながらダイエット!脚トレサーキットで効率よく脂肪燃焼しよう!【自獣トレ】 - YouTube

ランジきつすぎて死んだ

 

▼9.ダンベルで筋トレ

〆。使用器具は5kgダンベル一個のみ(5kgと10kgそれぞれ一個しかないんです)

 

メニューは

右腕ダンベルカール→右腕リフトカール

左腕ダンベルカール→左腕リフトカール

右腕ハンマーカール→右腕リフトカール

左腕ハンマーカール→左腕リフトカール

 

リフトカールはこれで前腕が太くなる!かっこいい腕を手に入れる最強のトレーニング - YouTubeの1:42~のを参考にやってます。

トレ方法ですが、山本式3/7法を参考にました。

ダンベルカール、ハンマーカールは3回行い、持ち上げた状態から15秒かけて腕を下ろし、4回行い持ち上げた状態から15秒かけて腕を下ろし、5回行って――、7回行って終わり。その後休憩を挟まず前傾姿勢になり、鉛直に腕を下ろしリフトカールしていく。

終わったら他方の腕に交代。

思った以上に腕が疲れたので1セットのみ。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

反省としては、腹筋をまとめてトレーニングすることで利いてる感じがした。

膝なし腕立て伏せを挟んだのが結構よかった。NHKの腕立て伏せはマジで無理ゲーすぎ。できるようになりたい。

背筋、ランジがきつすぎた。今後の課題は背筋と脚かな。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 

 

という感じでぼちぼち筋トレしています。

背筋、腹筋下部が弱い上に体幹も弱いので、今のところの目標としては

  • 腹筋を割りたい!(体脂肪も落としたい!)
  • 腕を太くしたい!
  • 背筋を強くしたい!
  • 体感を強くしたい!

ぐらいかな。今思えば1年半前なんか腕立て伏せ1回もできなかった人だから、それに比べたら成長しているよね!(胸を降ろした後、上げることができなかった)

 

今年もよろしくお願いします。m(_ _)m

ABC214を振り返る

・実を言うと、今日は今年になって競プロを初めて二週間目なのだ。

・確かこの記事を書いた日が今年初だったはずなので、丁度二週間目になる。

(下の記事を8/1に書いて、今日が8/15だから丁度二週間だね。)

volcano-tofu.hatenablog.com

 

 

・昨年もちょこちょこ遊んでいたが、よくわからないままコンテストに出て、よくわからないままPythonをいじって、よくわからないままよくわからないまま時間が進み、よくわからないままよくわからないままよくわからないまま辞めてしまった。

 

・で、じゃあなんで再開したのかと言われたら自分でもよくわかってなくて、特技や趣味が何もない自分に嫌悪感を抱いたからなんじゃないかと思う。

 

・「特技は・・・特にといったことはないんですけど、独学でプログラミングやってます。競プロっていうのやってます。因みに○○コーダーです」とか言えたら普通にかっこいいよね!

 

・因みにバイトもやっていて、最近は異様に忙しいのもあって中々取り組む時間が少なくなったりしてたりで辛い;;

ぼくにお盆休みなんてのはないんですよ・・・・・(お盆休み1日勢)

 

・今後の人生を考えるとストレスまみれで睡眠不足のまま出勤して、今日みたいな仕事がない日だと9時間以上は寝ないと頭がすっきりしないぐらい・・・。鬱かよ(笑)ってなります^^;

 

・まぁ、そんなぼくの諸事情なんてのはクソ程どうでもよいものなので、早速今回のABC214について振り返っていくことにしよう。

 

 

 

・といっても、何を書けばいいのかよくわかっていない^^;

・因みに今の自分の実績は以下のようなもの

 

 

▼問題数を熟せてなくて草

 

 

▼難問題にチャレンジしてなくて草

f:id:volcano-tofu:20210815130144p:plain

 

 

・前回のABCはA,Bしか解けず、C問題は座標圧縮を行う問題だったため、無念の結果を残してしまったんだけど、今回は無事C問題を解くことができました。やったぜ。

 

・今回のC問題の問われる知識はfor文のみで、外部からのライブラリを呼び出す必要は全くない。

 

・なのでサクッと解けて歓喜に満ちちゃったんだけど、時間が経つにつれて「やっぱC問題は簡単だったのでは?」と焦ってしまった。(笑)。for文2回分回せばいいからね・・・。

・とはいうものの、結果的にC問題はdiff400くらいだったんで、そこそこの難度だったらしい。解けてよかった。

 

・で、じゃあなんで今回のC問題が解けたかについては過去に解いた問題に似てたから、っていうのが理由として挙げられる。

 

 

▼今回のC問題

atcoder.jp

 

▼似てる問題1

atcoder.jp

 

▼似てる問題2

atcoder.jp

 

 

・上記のような、「ひとつがふたつのものに関与する且つ数値で処理する」タイプの問題min,maxが活躍しやすいのは把握済みで、特に本問は「n番目のすぬけ君はn-1番目のすぬけ君かn番目の高橋君のどっちかから宝石を貰う」と解釈され、なおかつ「どっちかから時間(数値)が早い(小さい)ものから受けとる」⇒「n番目のすぬけ君はmin(n-1番目のすぬけ君から受け取る時間,n番目の高橋君から受け取る時間)から宝石を貰う」と解釈することができ、ここまで書けばコーディングもすらすらできることだろう。

 

・さて、本問Cはそこまで書いて提出するとWAを喰らってしまう。

・円循環になっているから。

 

・例えば、どんなにすべてのすぬけ君が1秒後に宝石を渡そうが、高橋君から貰わない限りその操作ができないから、以下の入力例とその出力を考えると分かるのだが

 

入力:

4

4 3 2 1

100 100 100 1

 

出力:

2

6

9

1

 

・となる。他の例でも考えるといいのだが、これがfor文1回分じゃ足りない理由なので、2回回さなければならない。

 

・A,B問題については簡単すぎてお話にならないのでここでは特には書かないことにする。単なる三重for文を回せばよいだけ。

 

・残念だったのはD問題が解けなかったことかな。まぁ、まともに競プロを初めて二週間でD問題を解ける方がおかしい気もするので、今回はC問題だけでも解けたことを喜んだ方がよさそう。

 

・目標は特にはないけど、お世話になってる方が青コーダーなので、自分も青コーダーまでは精進したい。

 

 

■■■今後とも何卒よろしくお願い申し上げます!■■■

 

【Pythonメモ2-2】解いた問題を復習する。

・最近更新していなかったので。

・バイトが急に忙しくなって最近Pythonをやる時間が少ないです。あと帰ってすぐ寝たりとかして時間を失ったりとかが多いのもあって、やれてないです。

・若干モチベも下がっている。

 

・ABCを解く際に、C問題から知らないと解けない、難しい、といった問題が多くなり、焦って様々なアルゴリズムを勉強しないといけない、実装できなければならない、といった煽りを受けているとモチベーションが下がったりもする。

 

・例えば、幅優先探索深さ優先探索といった言葉を多々目にしたことがあり、試しにと思って幅優先探索を勉強したことがあるが、それ以前に配列の勉強(二次元配列やそれの取り扱いに苦手意識を持たないなど)などといった基礎のきにあたる勉強を怠っていた。

 

・その影響で、B問題のちょっとした問題をスピーディーに解くことができなかったり、分からないことがあって検索エンジンに手を伸ばしたりすることが多々あって、確かにABC本番時に焦るわなと改めてしまう。

 

・そこで今回は今まで解いた問題を総復習してみようと思う。

 

 

 

 

 

B - Do you know the second highest mountain?

atcoder.jp

  1. n = int(input())
    yama = []

    for _ in range(n):
    a, b = input().split()
    yama.append*1

    yama.sort() # int の昇順になる
    print(yama[-2][1]) # [x][y] 左からx番目, 左からy番目の要素を出力

Submission #24996256 - Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)

 

 

山の情報として、山の名前(str)、山の高さ(int)の2つが付与される。

・これらを二次元配列に収め、intについてsortし、2番目に高い山の出力は[-2]などと書けばよさそうだ。

 

・故に、本問を解くにあたって必要な知識は単なる配列ではなく、二次元配列も大丈夫ですかというジャブ攻撃に耐えれるかどうかである。

・ちなみにぼくは二次元配列はあまり分からず、取り扱ったことも全く無かったのもあり、文法知識として勉強になった。

 

▼例えば以下のようなもの

  1. li =
    a,b=input().split()
    li.append((int(b), a))
    li.sort()

 

・本来はfor文でa,bを指定回数だけ配列liに格納するのだが、便宜上として簡素にかいた。

・3行目のappendの括弧の中身に注目。先にint(b)を書いているのだが、これをsortしたらint(b)についての昇順になるだろうか?aについての昇順になるだろうか?

 

・答えは先に書いたint(b)についての昇順になる。

 

▼故に、このコードの出力結果は下のようになるのだ

  1. n = int(input())
    list =[]

    for _ in range(n):
      a, b = input().split()
      list.append((int(b), a))

    list.sort() # int の昇順になる
    print(*list)

入力:

4
a 4
b 10
c 1
d 7

 

出力:

(1, 'c') (4, 'a') (7, 'd') (10, 'b')

 

・さて、ここで初心者の人ほど疑問に思うことがあるだろう。

list.apend(a,int(b)) のように、先にaを入力したらどうなるだろうか?

・実は文字aの昇順になるのだ。なので、上の入力をすると出力結果は以下のようになる。

 

出力:

('a', 4) ('b', 10) ('c', 1) ('d', 7)

 

・ここまでできたら後はlist[-2][1]の意味もわかるだろう。

・全体の要素のうち、右から2番目、その要素の各々に対して2番目が該当する、というのを意味している。

 

 

B - 180°

atcoder.jp

  1. s=list(input())
    li=s[::-
    1] # [::-1], 或いは s.reverse() で逆順にできる.)
    for i in range(len(s)):
      if li[i] == "6":
        li[i] =
    "9" # 予めslist宣言をしていることで、listの値を更新できる.
      elif li[i] == "9": # s=str(input()) とすると,格納用listappendするしかない.
        li[i] = "6"
    print(''.join(li))

Submission #24995324 - AISing Programming Contest 2021(AtCoder Beginner Contest 202)

 

・配列の順序を逆順にする、joinを使える、といった基本的なことができていると楽な問題。

・逆順にしたことが今までなかったので、以下の様なinsertを使ったコードを組んだが、実行時間がギリギリだったため大変よろしくない。

Submission #24995115 - AISing Programming Contest 2021(AtCoder Beginner Contest 202)

 

・本問においては他に難しいところはなく、ちょっとした知識のジャブ攻撃ゲーだった。

・配列を逆順にしたあとは配列の要素を左からfor文で条件を満たすものがあればif文でちょこちょこ手を加えるだけなので、まさにB問題の流れそのもの。

・あとは配列を用いることでlistの値を更新できるのが配列のつよみかな。あーいう使い方は結構好みです。

 

 

B - ATCoder

atcoder.jp

  1. a=str(input())
    ans=
    0
    count=0
    for i in a:
      if i in "A" "C" "G" "T":
        count +=
    1
      else:
        count=
    0
      ans=max(count,ans)
    print(ans)

Submission #24897516 - AtCoder Beginner Contest 122

 

・別に難しくはないけど、for文の最後にmaxで値を保持するところがたのしくて好き。C問題になると値を保持するタイプの問題が増えてくるのでB問題にしてはやっておいて損はない部類だと思った。わからんけど。

・コードを見る限り、結構汚いのがわかるのだが、例えば五行目の if i in "A" ~ 以降とか、思わず「そういうときこそ配列使えよ!」と突っ込みを入れてしまいたくなる。^^;

 

・4行目にあるfor文の for i in a(aは文字列や配列): という書き方って、ガチの初心者の頃だとやりづらいというか、あんまりできないイメージがある。

・あと5行目にあるif文もiがこの文字(str)や配列と一致するものがあるかの in もガチの初心者だとやりづらい印象がある。今も表記にそんなに慣れてないんですよねぇ・・・。

 

・まぁ、繰り返し写経したり解いとけばこれくらいの基本は慣れるでしょう!そう信じたい。

 

 

B - 0 or 1 Swap

atcoder.jp

  1. n = int(input())
    p =
    list(map(int, input().split()))
    P =
    sorted(p)
    cnt =
    0

    for i in range(n):
      if p[i] != P[i]:
        cnt +=
    1

    if cnt == 0 or cnt == 2:
      print("YES")
    else:
      print("NO")

Submission #24920215 - AtCoder Beginner Contest 135

 

・for文一個で解いた。O(N)相当の計算量なのでO(100)も実はない。結構気に入っている解法。

・もとの数列が昇順なので、sort用いて比較する方法が強い。

・もしももとの数列が昇順じゃなく、バラバラである場合は以下のような数列を入れ替えて、再度入れ替える二重for文ループを用いるとよい。

Submission #24920140 - AtCoder Beginner Contest 135

 

・特にといった感想はない。

 

 

B - 105

atcoder.jp

  1. n=int(input())
    ans=
    0
    for i in range(1,n+1,2):
      cnt=
    0
      for j in range(1,n+1):
        if i % j ==0:
          cnt +=
    1
      if cnt == 8:
        ans +=
    1
    print(ans)

Submission #24898280 - AtCoder Beginner Contest 106

 

・与えられる条件は複雑じゃなく、シンプルなのですらすらコーディングができるとたのしい。

・約数をもつという表現はカタい感じはするものの、単に割り切れればよい。

 

1.最初のfor文で1以上n以下の奇数iを設定する。(x,y,z)のzを2にするのを忘れないように。

2.その各々のfor文でつくった奇数に対し、またfor文で1以上n以下のjをつくり、iがjで割り切れれば1カウントする。

3.合計8カウント丁度になったら個数を1カウントする。

4.個数を出力する。

 

・以上4ステップで簡単に解ける。らくらく、さくさく実装できるようにしておきたい。

 

 

B - K-th Common Divisor

atcoder.jp

  1. a,b,k=map(int,input().split())
    c=

    for i in range(1,min(a,b)+1):
      if a % i == 0 and b % i == 0 :
        c.append(i)
    print(c[len(c)-k])

Submission #24898625 - AtCoder Beginner Contest 120

 

・for文でa,bをともに割り切れる数iを適当につくった配列に格納する。

・このとき、a,bの大小がわからないため、a,bのうち小さい方以下だけfor文を回せばよいので (1,min(a,b)+1) という書き方をした。勿論minはなくてもa,bを超えたiが出た時点で割り切れないから大丈夫だと思う。

 

・割り切れたら適当につくった配列に格納し、k番目に大きいものを出力したいので len(c)-k などと書いた。

・なぜこれで書けるのかは、配列cには既にソート化されているからである。

・iはfor文で小さい順から配列cに入るので、わざわざソート化する手間が省け、ソート化されているから len(c)-k として書けるのだ。これぞ一石二鳥。

 

 

B - Uneven Numbers

atcoder.jp

  1. n=int(input())
    ans=
    0
    for i in range(1,n+1):
      if len(str(i)) % 2 == 1:
        ans +=
    1
    print(ans)

Submission #24897900 - AtCoder Beginner Contest 136

 

・strは配列と似ていることについては以下の記事で書いたことがある。

volcano-tofu.hatenablog.com

 

・当時のぼくは、sum(map(list(map(int,str(i)))))の意味すら全然分からなかったが、改めてみると「見える、見えるぞ!」ってなってる(^^;

 

・例えば、s=str("a1b2") みたいな文字列を考えると、s[0]=a, len(s)=4 が返ってくるのだが、配列と似た性質であることがわかるだろう。

・ということは、桁数が奇数という条件は、長さlenを2で割った余りが1と同値なので、if文を用いて if len(str(i)) % 2 == 1: という書き方が可能なのがわかる。

・条件を満たすなら ans += 1 とかして ans を出力すればいい。

・あとはfor文で1以上n以下のjについて試せばいいだけ。

 

 

 

 

 

 

 

早く書き上げて早く寝ようと思ったのに、2時を超えてしまったじゃないか!もう寝るもん!

 

・明日はbit全探索、幅優先探索の問題を復習してみようと思う。ついでに記事も上げてみようかな?

 

お疲れさまでした。

*1:int(b), a

【Pythonメモ2-1】bisectを使ってC問題を解く。

・最近この曲をループ再生しながらPythonすることが多いです。(謎宣伝)

サビの高音から低音にかけていくのが本当にキモチイイ・・・

www.youtube.com

 

・次のふたつのC問題をbisectモジュールを使って解いてみよう。

 

■【ABC212】C - Min Difference

■【ABC213】C - Reorder Cards

 

 

・bisectモジュールのちょっとした使い方については次を参考にしました。

 

qiita.com

 

 

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

・軽くbisectの説明。

  1. import bisect

    a=[10,20,30,40,50,60,70,80,90,100,100]
    print(bisect.bisect_left(a,55)) ⇒ 5
    print(bisect.bisect_left(a,50)) ⇒ 4
    print(bisect.bisect_left(a,5)) ⇒ 0
    print(bisect.bisect_left(a,100)) ⇒ 9
    print(bisect.bisect_left(a,105)) ⇒ 11

 

・importでbisectを呼び出します。

関数はbisect_leftとbisect_rightのふたつがあります、rightは使わないことが多いみたいな記事を拝見した記憶があるのでleftだけ使えるようになればいいと思います。(一方の使い方を理解すれば他方も理解できるはずなので)

 

・aというリストは大まかに背の順だと思ってください。身長が10m,20m,...,100mの人がいます。そこに身長55m,50m,5mの人が入るには左から何番目が適しますか?という質問をbiseect.bisect_left(list,int) で送ればインデックスが返ってきます。

・恐らく意味は「list中にintが入るなら何番目ですか?」かと思われ、(int,list) で書くとエラーが返ってくるので逆にしないようにしましょう。

(「int中にlistが入るなら何番目ですか?」では意味が分かりませんね。)

 

 

■bisect.bisect_left(a,55) = 5 について

・身長が5mの人がいれば先頭(=0)に立ちます。for文が0から始まるのと同様に、左から0カウントなので、55は5カウント目に入ることからインデックスとして5が返ります。

 

■bisect.bisect_left(a,50) = 4 について

同様の値が存在する場合、bisect.bisect_leftのleftの意味から察し、左側としてカウントします。なので5になりません。(もし、bisect.bisect_rightであれば、5が返ってきます。)

 

■bisect.bisect_left(a,5) = 0 について

・10mの人の左側の最も左側に立ちます。for文と同様に、0カウント始まりなのでインデックスは0として返ってきます。

 

■bisect.bisect_left(a,105) = 11 について(重複している場合!非常に重要!)

・100mの人の右側に立つのですが、100mの人は二人いますね。このように同じ要素があっても各々独立したものとして考えるので、100mの人が二人いたら二人分として数えます。背の順と全く同じ考え方であり、二人分を一人分として数えることはありません!

・更に bisect.bisect_left(a,100) = 9 であることにも注目しておきましょう。(二人分飛ばしなので100mの人は9番目、105mの人は11番目であることに注目します。)

 

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

・先に、C - Min Differenceを解説します。

 

▼コードは以下の通りです。

  1. import bisect

    n, m =
    map(int, input().split())
    a =
    list(map(int, input().split()))
    b =
    list(map(int, input().split()))
    li =
    b.sort()

    for i in range(n):
      c = bisect.bisect_left(b, a[i])
      if c == 0:
        li.append(
    abs(a[i]-b[0]))
      elif c == m:
        li.append(
    abs(a[i]-b[m-1]))
      else:
        li.append(
    min(abs(a[i]-b[c-1]), abs(a[i]-b[c])))
    print(min(li))

Submission #24930971 - AtCoder Beginner Contest 212

 

 

・さて、本問は幾つかの解法があるはずですが、なぜ「bisectを用いれば解けるのでは?」と思いついたのかを説明します。

 

・というのも、bisectの性質自体が本問に直接役立たせているから、としか言いようがないんですが、折角上記でbisectの使い方を軽く説明したので、その例を用いて簡単な具体的な処理から考えることにします。

 

 

■■■リストaがN個の整数値の要素を持つとき、aの各々の要素に対し整数値bとの差が最小になる値を求めよ。■■■

 

 

▼この程度であれば、Nの制約にもよりけりですが

 ◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

  1. li=[] で予めリスト宣言をする。
  2. for文(for i in range(N)) を用意する。
  3. li.append(abs(a[i]-b)) でリストに内蔵する。
  4. print(min(li)) で内蔵された差のうち、最も小さいものを出力する。

 ◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

といった4ステップを踏めば、流れは典型的なB問題です。

 

・さて、本問に対して同様な操作を行うとどうなるでしょうか?

・制約を覗くとAとBの要素の個数の最大数は 2*10⁵ と書いてありますね。

・つまり、脳死二重for文ループで abs(a[i]-b[j]) とかしていたら O(10¹⁰) 相当の計算量になるためTLEになります。

 

 

・そこで。このクッッッッッッッッッッソ莫大な計算量を大幅に削減するために、bisectくんが活躍します。

・上記の4ステップにbisectくんを追加する6ステップで本問を完封することが可能です。

・なぜなら、bisectくんによって背の順で指定された位置の前後との差を取ればよいからです。この一工夫を行うだけでACを獲得できます!

 

 

▼ということで、bisectくんを追加した6ステップは以下のようになります。

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

  1. li=[] で予めリスト宣言をする。
  2. for文(for i in range(N)) を用意する。
  3. c=bisect.bisect_left(b,a[i]) と定義する。
  4. if文でcが最前列or中間or最後尾で分別し、該当するbの背の前後との差を求める。
  5. (a[i]が中間ならば)li.append(min(abs(a[i]-b[c-1]),abs(a[i]-b[c]))) でリストに内蔵する。
  6. print(min(li)) で内蔵された差のうち、最も小さいものを出力する。

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

追加点、改善点は緑色にしました。

・今まで言及していませんでしたが、配列bは背の順並びなので予めソートをしておく必要があります。aもソートをしても構いませんが、特に意味はないです。

 

・手順5において、a[i]が中間じゃないとき、それは最前列か最後尾に属し、例えば最前列であればその前に要素bはありません。故にbの最前列の b[0] との差を求めるしかないのです。(b[-1]は最後尾ですが、これと比較してはいけません。)

・同様に、a[i]が最後尾である場合はbの最後尾の b[m-1] との差を求めるしかありません。これをif文で条件分岐を作ったわけです。数学でいう場合分けと同じですね。

 

・上記を踏まえれば本問を解くことができます。もう一度コードを載せておきます。

▼myコード

  1. import bisect

    n, m =
    map(int, input().split())
    a =
    list(map(int, input().split()))
    b =
    list(map(int, input().split()))
    li =

    b.sort()

    for i in range(n):
      c = bisect.bisect_left(b, a[i])
      if c == 0:
        li.append(
    abs(a[i]-b[0]))
      elif c == m:
        li.append(
    abs(a[i]-b[m-1]))
      else:
        li.append(
    min(abs(a[i]-b[c-1]), abs(a[i]-b[c])))
    print(min(li))

 

 

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

 

・次はC - Reorder Cardsを解説します。

 

▼コードは以下の通りです。

  1. import bisect

    h, w, n =
    map(int, input().split())
    xy = [
    map(int, input().split()) for _ in range(n)]
    x, y = [
    list(i) for i in zip(*xy)]
    lix =
    liy =


    X =
    list(set(x))
    Y =
    list(set(y))
    X.sort()
    Y.sort()

    for i in range(n):
      lix.append(bisect.bisect_left(X, x[i]) +
    1)
      liy.append(bisect.bisect_left(Y, y[i]) +
    1)

    for i in range(n):
      print(lix[i], liy[i])

Submission #24933916 - AtCoder Beginner Contest 213

 

・こちらの問題は座標圧縮を実行する問題です。

・座標圧縮とはリストに幾つかの整数値の要素があり、小さい順から1,2,3...とか0,1,2...という風に名前を付けていくことです。(端的に言うとね)

 

・例えば [10,3,2,5] であれば [4,2,1,3] と変換したいのです。ソート化と二重for文を用いればできなくもないんですが、本問の制約は要素の最大数が 10⁹ と書いており、要素分だけfor文を2回回すので O(10¹⁸) では十分に間に合いません。(実際にTLE以外にWAが出たりで解法としても非常によろしくない)

Submission #24887358 - AtCoder Beginner Contest 213

↑こんな感じ

 

 

・そこで、このクッッッッッッッッッッッッッッッッッッソ莫大な計算量を大幅に削減するために、またまたbisectくんが活躍します。

 

・さて、どのようにbisectを使えばいいのかについてですが、a=[10,3,2,5] をソートすると A=[2,3,5,10] になりますね。そこで「bisect_rightを用いて a[i]がAの何番目に入るのか」というのが直接座標圧縮に繋がっているのが分かりますか?

・a[0]=10 が bisect_right でAのどこに位置するのかは左側から数えて4番目なので、インデックスとして4を返します。

・a[1]=3 についても同様の操作を行うことで 2 を返してくれます。

・a[2], a[3] についても同様な操作を(ry

・という操作をaの要素分だけfor文で回せばよさそうです。

 

・ただし、一番最初のbisectの軽い説明の所にもあった通り、重複している要素は省く必要があります。

・例えば [10,3,2,5,3] であれば [5,2,1,4,2] と変換されてしまうので、重複している要素を省く羽目になるからなんです。

(a=[10,3,2,5,3] をソート化した A=[2,3,3,5,10] において、a[0]=10 は左側から5番目にありますが、4を返す必要があるからなんです。)

 

 

▼ということで、以上の流れを箇条で書いてみましょう。

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

  1. lix=[], liy=[] を予めリスト宣言をする。
  2. リストx,yをset化し、それを再度リストに直してソート(X,Y)する。(重複をなくすため)
  3. for文(for i in range(n)) を用意する。
  4. bisect_rightで要素 x[i],y[i] が X,Y のどこに位置するかを返し、それをそれぞれ lix, liy に内蔵する。
  5. for文を用い、内蔵されたn個の要素 x[i], y[i] を出力する。

◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢

 

・上記を踏まえれば本問を解くことができます。もう一度コードを載せておきます。

▼myコード

  1. import bisect

    h, w, n =
    map(int, input().split())
    xy = [
    map(int, input().split()) for _ in range(n)]
    x, y = [
    list(i) for i in zip(*xy)]
    lix =
    liy =


    X =
    list(set(x))
    Y =
    list(set(y))
    X.sort()
    Y.sort()

    for i in range(n):
      lix.append(bisect.bisect_left(X, x[i]) +
    1)
      liy.append(bisect.bisect_left(Y, y[i]) +
    1)

    for i in range(n):
      print(lix[i], liy[i])

 

 

 

・書くのに疲れるし、時間がかかるのでもっと簡素に書きたいが・・・復習する際にこれぐらい書いておけば楽にできると思うから書かざるを得ないと思ってる(

・もっともっと学ぶべきことが多いから若干挫折してるが、一ヵ月ぐらい頑張ってみる。

 

お疲れさまでした。