1. フリー台本読む人
  2. トヨタ自動車プログラミングコ..
2024-11-23 28:51

トヨタ自動車プログラミングコンテスト2023#3(AtCoder Beginner Contest 306)

spotify apple_podcasts youtube

トヨタ自動車プログラミングコンテスト2023#3(AtCoder Beginner Contest 306)https://atcoder.jp/contests/abc306↓の提出コードを見ながらの聴取を推奨いたしますA:https://atcoder.jp/contests/abc306/submissions/52791803B:https://atcoder.jp/contests/abc306/submissions/52791932C:https://atcoder.jp/contests/abc306/submissions/52792154Atcoderホームページ:https://atcoder.jp/home2・7・11・17・23日更新予定#競技プログラミング #Python #podcast

BGMタイトル: Doghouse 作者: Blue Dot Sessions 楽曲リンク: https://freemusicarchive.org/music/Blue_Dot_Sessions/Warmbody/Doghouse/ ライセンス: CC BY-SA 4.0

サマリー

トヨタ自動車プログラミングコンテスト2023のエピソードでは、AtCoder Beginner Contest 306のA問題やB問題について詳しく解説しており、具体的なコード実装や問題の考え方が討議されています。トヨタ自動車プログラミングコンテスト2023は、プログラミング技術を競うことで参加者の能力を試す機会を提供しています。

A問題の解説
トヨタ自動車プログラミングコンテスト2023、シャープ3、
AtCoder Beginner Contest 306、
A問題、エコー。
問題文、長さNのA小文字からなる文字列Sが与えられます。
Sの合文字目をSIと記します。
S1、S1、S2、S2、…、SN、SNをこの順に連結した長さ2Nの文字列を出力してください。
例えば、SがBeginnerのときはBBEGGIINNNERと出力してください。
同じ文字を繰り返して出してください、というやつです。
Nイコールイントのインプットで文字列が与えられます。
Sイコールインプット、どうしようかな。
ANSイコール空の文字列、
for in range n回、
ANSプラスイコールSの合文目、
で、もう一回ANSプラスイコールSの合文目、
プリントANS提出。
B問題のコード実装
はい、閲視しました。
ANS、アンサー変数に2回同じ文字列をプラスして最後出力するという処理を行いました。
B問題いきます。
ベース2問題文。
0と1からなる長さ64の数列A、A0からA63までが与えられます。
A0×2の0乗プラス、A1×2の1乗プラス、…Aの63×2の63乗を求めてください。
入力例。
0と1からなる長さ64の数列。
ふんふんふんふん。
あーなるほどね。
だから、1、2、3、4、5、6、7、8、9、10、11、
ん? 1、0、1、1、12、13か。
2進数の左から数えている番の2進数ですね。
なので、Sイコールインプットと空白区切りで入っているので、
空白区切り.ジョインインプットかな。
ちょっとコードテストで確認していきますか。
2進数を10進数に戻すのってどうやるんだっけ。
プリントSで、あれ? ジョインできてないな。
プリントSイコールインプットプリント空白区切り.ジョインS。
あれ? できてないな。
んー、まあいいか。
1回無視して考えておいて。
Sを括弧ダブルコロンダブルコロン-1にして反転させます。
いや、反転させる必要ないのか?
反転させる必要ない気がしてきた。
マイナス1を消してアンスイコールゼロを
フォアインレンジレンSで
アンスプラスイコールSのi番目かける
2のかけるかけるi乗
で、プリント最後アンス、はい。
あれ?
アンサポーテッドオーダードタイプ、あ、そうか。ヒント型にしてないから。
イント括弧Sのi番目。
インマリトリティブルフォーイントウィズベース
あー、空白区切りになっちゃってるんだ。
空白区切り埋めたい。埋めたいなぁ。どうやって埋めるんだろう。
Sイコールリストのインプットにして
空の文字列.ジョイン
リストのインプットでどう?
ジョインってリストにしか反応しないんでしたっけ?
プリントS。
うん、ダメだね。
法文を1回ちょっと邪魔、エラーになってるんで消して
困ったなぁ。
ここが処理できないと。
.スプリットか。インプット.スプリットで
空白区切り。
大丈夫そうですね。これでいけたね。
リストのマップのイントインプットスプリットにしたら
わざわざイントに変換しなくてもOKっぽい。
はいはいはい、だいぶスッキリしてきたね。
で、フォワインレンジ
レンS
アンサーはSのi番目かける2のi乗をプラスしていく。
で、プリントアンス
C問題の挑戦
13。入力例2、766-067-857わーっといっぱいあるのが
出ればOK。
はい、766-067-858。
大丈夫そうですね。173が最後。OKOK。
はい、じゃあ提出していきます。
そうか、リストでスプリットで入れてジョインしないといけないんですね。
はい、ACしました。C問題いきます。C問題、センターズ。
問題文。1からnがちょうど3回ずつ現れる長さ3nの数列aが与えられます。
iイコール1からnについて、aの中にあるiのうち真ん中にあるものの添え字を
fのi、fi関数ですね。と定めます。
1からnをfiの標準に並べ替えてください。
fiの定義は厳密には以下の通りです。
ajイコールiを満たす、iを満たすjが
jイコールαβγα小なりβ小なりγであるとする。
このときfiイコールβである。
はい。
制約は10の5乗。
1、2…nをfのi番目の標準に並べ替えてできる長さnの数列を空白切りで出力せよ。
入力例1は3。
1、1、3、2、3、2、2、3、1。
出力例は1、3、2。
aの中にある1はa1、a2、a9なので
f1イコール2です。
aの中にある2はa4、a6、a7なので
f2イコール6です。
aの中にある3はa3、a5、a8なので
はいはいはい、なるほどね。
そのランダムに並べられた数字が
1からnまであって
それぞれの出現した場所、インデックス数ですね、だから。
1はこの数列の1番目と何番目と何番目にありますよ
っていうのの真ん中を記憶しておくんですね。
で最終的にその真ん中のインデックス数、添え字を小さい順に
それに当たる数字を並べてくださいですね。
えー、面白いな。どうやるんだろうこれ。
3文字ずつあるのは決定事項なんだ。なるほどね。
一回ちょっとやってみましょうか。
nイコールintのインプット。
どうやるのがいいんだろうか。
制約は10の5乗でしょ。10の5乗だったら正直
ループで回せば何とかなりそうな気がするんですけどね。
だから、えっと、dicで辞書を作っておいて
lイコールlistのmapのint、input.split
わざわざintにする必要ないと思うんですが、一応やっておきましょう。
lのif、dic、違う、if
lのi番目がnot in dicだったら
dicの括弧li番目
l数、lif、dictionaryのlのi番目が
イコールイコール1だったら
dictionaryの、ちょっとlのi番目っていうの変数作っておきますか。
liイコールlのi番目
dictionaryのliが
すでに1個入っている場合、次のやつを保存しておきたいので
dictionaryのliイコールiプラス
いや、まあいいか。dictionaryのliイコールiにして
1回プリント、dictionaryで確認
2が、2が入れていない上に1になっているな。
lif、dictionary、なんでや。
4レンジnにしているからな。
差算が9かなこれは。n×3だね。
レンジn×3。1は8、3は4、2は5。
違うね。ちょっと4文で毎回dictionary
プリントしてもらいましょうか。
どうなっとる?
1、1、最後の最後に1がプラス。
ああ、そうか。
インデックス風にしちゃうとそうなっちゃうか。
じゃあ、if li not in dictionaryの場合
文字数、文字列の1にしておこう。
index4分のiと
dictionaryに入れてた1が
競り合っちゃっておかしくなってましたね。
これなら、1は1、3は4、2は5。
そうですね。だから1、3、2を出すのがOK。
これは、えっと
dictationでない。いつも間違えるなdictationって。
dictionaryをそうとすればいいのか。
print sorted dictionaryにしたら
何順になる?
1、2、3。
後ろが出るわけじゃないんだ。
ラムダ関数使いたいな。
ラムダ、ラム、ブ、ダ、パイソン。
なんか選挙かなんかのあれがあきましたね。
ラムダ関数作成方法の1つ。
ラムダ式でき術。
いやーわからん。
ラムダの辞書の
パイソン辞書を
sort。
valueでsort。
辞書の要素をsortする方法。
オズの最後の鯨みたいな鳴き声が外で聞こえる。
あれかな。
メガホンかなんかの調整してるんですかね。
辞書の要素をsortする方法。
keyとvalueで構成されています。
keyによる小順のsort。
value。あれ?
keyによる小順のsortできてるの?
アイテム。
keyやvalueを元にsortする方法を確認します。
はじめに元となる辞書を用意しましょう。
はじめに元となる辞書を用意しましょう。
a、b、c、d。これはkeyになってますね。
後順にsortする場合はreverse option。
valueでsortする場合はラムダ式を使用して
sort条件を設定します。
このままコピーしましょうか。
sorted()dic.items,key="lambda x semicolon x1",
key="lambda x semicolon x2",
key="lambda x semicolon x3",
key="lambda x semicolon x4",
key="lambda x semicolon x5",
key="lambda x semicolon x6",
key="lambda x semicolon x7",
key="lambda x semicolon x8",
key="lambda x semicolon x9",
key="lambda x semicolon x10",
key="lambda x semicolon x11",
key="lambda x semicolon x12",
key="lambda x semicolon x13",
key="lambda x semicolon x14",
key="lambda x semicolon x15",
key="lambda x semicolon x16",
key="lambda x semicolon x17",
key="lambda x semicolon x18",
プログラミングの基本
key="lambda x semicolon x19",
key="lambda x semicolon x20",
key="lambda x semicolon x21",
key="lambda x semicolon x22",
key="lambda x semicolon x23",
key="lambda x semicolon x24",
key="lambda x semicolon x25",
key="lambda x semicolon x26",
key="lambda x semicolon x27",
key="lambda x semicolon x28",
key="lambda x semicolon x29",
key="lambda x semicolon x30",
key="lambda x semicolon x31",
key="lambda x semicolon x32",
key="lambda x semicolon x33",
key="lambda x semicolon x34",
key="lambda x semicolon x35",
key="lambda x semicolon x36",
key="lambda x semicolon x37",
key="lambda x semicolon x38",
key="lambda x semicolon x40",
key="lambda x semicolon x41",
key="lambda x semicolon x42",
key="lambda x semicolon x43",
key="lambda x semicolon x44",
key="lambda x semicolon x45",
key="lambda x semicolon x46",
key="lambda x semicolon x47",
key="lambda x semicolon x48",
key="lambda x semicolon x49",
key="lambda x semicolon x50",
key="lambda x semicolon x51",
key="lambda x semicolon x52",
28:51

コメント

スクロール