LoginSignup
2
1

More than 1 year has passed since last update.

競プロなにそれおいしいの?から食べ物でないと気づくまで(A問題解けるくらいまで)

Posted at

はじめに

最近はやたらと競プロAtCorderという言葉を聞く機会が増えた気がします。
私の大学の友達も「今日のビーモンダイ簡単だったね」や「今日のコンテストゼンタンサク使ったらティーエルイーだったわ」など耳馴染みのない第二言語のような言葉が飛び交うようになったので、これは私も始めないとと思い全く分からないながらも競プロデビューしました。

この記事ではそんな競プロ何それ美味しいのっていう状態から食べ物ではない(冗談です)今日はA問題の過去問解こう!となるまでの過程をまとめてみました。

そもそも競プロって何?

競技プログラミング(競プロ)は、プログラミング技術を競うコンピュータサイエンスの競技です。競プロでは、与えられた問題に対してアルゴリズムやデータ構造を使用して解答を作成し、その正確性と実行時間の効率性を競います。
競技プログラミングの目的は、与えられた問題を最も効率的に解決するアルゴリズムを見つけることです。参加者はプログラムを作成し、問題の入力に対して正しい出力を生成する必要があります。(GPT回答)

GPTも言っているようにシステム開発の実装などではなく、アルゴリズムを用いて回答するので実際のWebアプリ開発等の実装とは異なります。

おすすめ記事

勉強していくときにお世話になったQiita記事を共有しておきます

  • 網羅的に競プロに必要な文法や書き方ついて学べるのでおすすめです

  • 遅かれ早かれ、競プロをやっていると計算量というワードが飛び交います。個人的に計算量を理解するのに一番分かり易かったです

  • 最低限の数学的知識を教えてくれる記事で数学苦手な私も助けられました。

解く中で学んだテクニックのメモ(雑記)

Pythonで競プロ行う中で自分が詰まった点や知らなかった点を雑多に書いているので誰かの役に立てば幸いです
下記に書いてある内容は私のgitHubに書いてあるTILからの抜粋です。自分用なので見づらかったらすみません...

入力系

s = input() //文字列
n = int(input()) // 数値
a,b = map(int,input().split()) //複数の数値
m = list(map(int,input().split())) // 数値のリスト

よく使う文法

リストの要素のインデックスの取得

Python のリスト(配列)の要素のインデックス、つまりその要素が何番目に格納されているかを取得する方法

リストの要素が重複していない場合、index()メソッドを使う

この問題で出てきた

テクニック系

数値の判定
数値であるか判定するにはisdigit関数を用いることで判定出来る

数値なら=> True
それ以外なら => False

python でのスライス

注意点

最後のインデックスで指定した数から1引いた数までスライスされる。

この問題で間違えた

Python のスライスについて詳しく

文字を繰り返す方法

文字は文字 * 数値で繰り返すことができる

ans  = "a" * 100
print(ans)

# aが100個出力される

この問題で知った

数値からアルファベットの変換

Python の標準関数のchr関数を使う。
chr 関数は、ASCII コードにしたがって、数字からアルファベットや記号に変換してくれる。

ビルドイン関数だからインポートしなくていい

ちなみにアルファベットから数値の変換はord関数を用いる

問題

この問題で出てきた

回答例

for i in range(26):
    ans += chr(ord('a') + p[i] - 1)
#ordで最初の文字の数値を取得それに数値を足していって、文字列変換してる

終わりに

まだまだ私も勉強を始めたばかりですが、競プロを始めたいと思う方の少しでも参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1