プログラミング

IT・プログラミング

茶色コーダーになった自分の現状まとめてみる

Atcoderで茶色レートになれたので現在の自分のレベルを記事にしておこうと思います。このブログでAtcoderの問題の解き方(というより復習?自分の思考の整理?)を記事にしていますが、こういうレベルの人が書いているということでご理解いただ...
IT・プログラミング

ABC429 C – Odd One Subsequence

整数列Aの中から2つは等しく、残りの1つは異なる組を満たす個数を答える問題どの数がいくつあるかを持っておけば良いなと思ったところまでは良かったですが、そのあとが思いつきませんでした。まず、辞書型の配列で以下のように出現頻度をもつことにしまし...
IT・プログラミング

ABC428 C – Brackets Stack Query

(と)の数をカウントして、同数になったときに良い括弧列とする形にしました。ただし、)(のような形は良い括弧列ではないので(の個数が)の個数以下の時に)がきたら、その場所を記憶しておき、その括弧がなくならないと(と)が同数でも良い括弧列とみな...
IT・プログラミング

ABC426 C – Upgrade Required

1,2,...,NまであるOSのバージョンをクエリの条件に従ってアップグレードしていく問題。x yのような入力が与えられてx以下のバージョンをyにアップグレードする。一番古いOSのバージョンを記憶しておくと良く、またもし一番古いバージョンが...
IT・プログラミング

【Rust学習】ジェネリクスを勉強する

Rustを勉強していてジェネリクスの書き方が覚えられなかったので、備忘として記事に残しておこうと思います。ジェネリクスとは?ジェネリクスを一言でいうと、同じコードを、いろんな型に対応できるようにする仕組みまた、ジェネリクスは慣習的にTやUが...
IT・プログラミング

ABC424 C – New Skill Acquired

はじめに(A, B)=(0, 0)の習得済みのスキルを持っておきました。また該当のスキルを習得している場合に習得できるスキルをdictで持ちます。その後習得済みのスキルがあるだけループして、先ほどdictで持っておいたものの中から習得できる...
IT・プログラミング

ABC423 B – Locked Rooms

問題文は↑はじめに部屋の先頭と末尾にダミー(1)を入れ、それ以外の部屋に0を入れた配列を用意します[1, 0, 0, 0, 0, 1]その後、先頭と末尾からそれぞれロックされたドア(1)に当たるまで各配列の中身を+1しながらループします0の...
IT・プログラミング

ABC422 C – AtCoder AAC Contest

A、B、Cの文字をそれぞれ持っており、AとCは一つづつ使った上でその他の1文字を使い、AAC or ABC or ACCのどれかを最大いくつ作れるかといった問題。AとCは必ず使う必要があり、もう一つはAでもBでもCでも良いですが、Bの足りな...
IT・プログラミング

Geminiを使ってRustでクイックソートを勉強してみた

「クイックソート、実装できますか?」わたし自身は資格の勉強で名前を聞いたことがあるだけで実装したことがありませんでした。この記事では、テスト駆動開発(TDD)の手法を用いて、Rustでクイックソートをゼロから実装し、さらにパフォーマンスを計...
IT・プログラミング

何気なく使っていたJavaScriptのtoString()メソッドを整理する

JavaScriptでプログラムを書いていたときに、toStringメソッドを調べていたところ、いろいろなオブジェクトでtoStringメソッドが存在し、オブジェクトごとに使い方が異なるため整理してみました。toString()とは?Jav...
IT・プログラミング

RustでAtCoder Beginners Selectionを解き切ったので学んだことを書いていく

Rustの勉強に良いかなとAtcoder Beginners Selectionを少しづつ進めていましたが、ようやく全て解いたので学びをまとめていこうかと思いますRustでAtcoderを始めるときのテンプレート私はRustでAtcoder...
IT・プログラミング

ABC416 C – Concat (X-th) 

今回のC問題はitertoolsのproductを利用し、全列挙した後にソートすることでで解けましたfrom itertools import productdef i_map(): return map(int, input().spli...
IT・プログラミング

ABC415 C – Mixture

Atcoder Liveの方で聞いた解説が一番理解できました個人的には以下の図で考えるのが一番わかりやすいかなと思っていて、状態0から薬品を混ぜて遷移できる状態を深さ優先探索のような形で辿っていきますこの時にすでに到達していた場合や、S(瓶...
IT・プログラミング

ABC410 C – Rotatable Array

この問題はクエリのタイプに従って処理を行う問題です。この問題ではクエリのタイプ3の処理を高速化しないとTLEになってしまいます。初期状態が以下だとします。i01234A12345タイプ3のクエリで「 A の先頭の要素を末尾にする」という操作...
IT・プログラミング

「literally」と「リテラル」は同じ語源?英語とプログラミングをつなぐ”文字通り”の話

最近英語系のインフルエンサーの動画を見ていて「literally」という英単語を耳にしました。どこかで聞いたことあるなと考えていて思い出したのがプログラミングをしていると必ず出てくる「リテラル(literal)」という言葉。実はこの2つ、同...
IT・プログラミング

Rustでベクタ型の配列の重複を排除する方法

競技プログラミングをしていて配列の重複を排除する方法が分からなかったのでまとめます。重複を排除する方法重複を排除するには外部クレートを使うと簡単に記述できます。# Cargo.tomlitertools = "0.12"# Cargo.to...
IT・プログラミング

ABC409 C – Equilateral Triangle

ギリギリになって、累積和で点の座標を求めるところまで思いついたのに、正三角形を求める方法が思いつきませんでした。悔しい、、今回も解説を読んでいきます。問題円周上の点1,2,...,Nが配置されていて、点i+1は点iから時計回りに円周上をdi...
IT・プログラミング

ABC408 C – Not All Covered

全く解法が浮かびませんでした、、、imos法という方法で解くらしいです。解き方imos法では以下のような表を考えると、わかりやすいのかなと思います。入力例1で考えます。imos法の詳細な解説はこちらを確認するのが良さそうです。i123456...
IT・プログラミング

ABC407 C – Security 2

本日はABC407 C - Security 2について見てみようと思います。言語はPythonになります。問題画面に表示される文字列tがあります。tは最初空文字でボタンを押すと以下の変化が起こります。ボタンA:末尾に0追加。ボタンB:tの...
IT・プログラミング

ABC406 C – ~

この日はB問題までしかできませんでした。C問題が全くわからなかったので解説を読んでいくことにします。まず最初にPの大小関係を < と > を使い文字列Sで表します。1 3 6 4 2 5上記であれば<<>><ですね。この時Pがチルダ型である...