atcoder#158に参加した 1回目

初めてatcoderに参加しました
前々から参加してみたいと考えていたところで所属している会社の求人がAtCoderJobsに求人を出したのがきっかけです
(本当はその求人の要求ランクがS以上(AtCoderでいう黄色コーダー)で社内チャットが燃えて盛り上がってたのでやってみっか〜的な)

私のバックグランドとしては以下のような感じです
・大学はFラン工学部電気電子工学科
・初めてプログラムを書き始めたのが大学からで、苦しんで覚えるC言語で独習
・前職で組み込み受託開発を3年やっておりC言語ならちょっとかけるかな〜程度
・現職ではなんちゃってIoTエンジニアみたいな感じなので、ちょっとしたshとpythonスクリプトを書くくらい
・paizaではAランクの簡単そうな問題をC言語で愚直に書いて通ったので一応paizaAランク

始める前に少し悩んだのが言語をなにするか
Cならちょっとかけるしpythonもまあ触ったことある、最近C++の勉強も始めたし。。。的な
結論としてはC++で挑戦しました Cだとソートとか入出力がめんどいし、pythonだと遅そうだな〜と

で、AtCoder#158に初参加した結果ですがAB問題しか解けませんでした
提出したやつ一覧 f:id:urib0:20200308215739p:plain f:id:urib0:20200308220155p:plain

以下、各問題の雑感

  • A問題
    Noを出力する組み合わせが2種類しか無いので条件決め打ちでif-elseすれば良いのですぐ提出できた
  • B問題
    1,2回目の提出では愚直に青,赤のリストを愚直に作成してTLEしまくった
    3回目でリストを作る必要が無いことに気づいてほぼO(n)で計算する方法に直したけど、intで計算していたのでREしてしまったっぽい
    もうちょっと計算量と変数のサイズを意識したほうがいいと思った
  • C問題
    10%時の最小値 < 8%時の最大値 だったら-1
    そうでなければ10%時の最小値で8%時でも成り立つか確認
    とかすれば満たせそうだったけど時間切れ