LoginSignup
4
3

More than 3 years have passed since last update.

Re:ゼロから始める競技プログラミング生活 第1章1『C++しか使えない』

Last updated at Posted at 2020-01-25

はじめに

本記事はプログラミング若葉マークを胸に貼ったエンジニア志望の私、OTがAt.Coderで出題された競技プログラミングの問題を死に戻り(リトライ)を繰り返して解いていく、涙なしでは読めない長編Part式の記事となっております。
途中で絶望して失踪するかもしれませんが、せめて就職が決まるまではやっていきたいと考えています!!

まずは簡単なプロフィール

名前:OT
プログラミング歴:3ヶ月(TECH::EXPERT63期)
使える言語:Ruby(Railsで簡単なWebサイトを作れるレベル)、C#(Unityで簡単なオセロを作れるレベル)、Python("Hello World"レベル)
好きな芸能人:ガッキー

最初の敵

では、何の文脈もありませんが早速問題を解いていきます。笑
最初なので一番簡単なA - Roundingで経験値を積んでいく算段。
では、記念すべき第一問目どーん!!

問題文
X,Aは0以上9以下の整数です。
XがA未満の時0、A以上の時10を出力してください。

制約
0≤X,A≤9
入力は全て整数である

...めちゃくちゃ簡単じゃね!?
言語は練習を兼ねてPythonを使ってみました。完全に舐めプです。
これが沼への入り口だとも知らずに...

絶望のPython、希望のC++

x = int
a = int

if x < a:
  print("0")
else:
  print("10")

「とりあえずコードはこれでいいでしょう」
そう呟き、私は「Pythonって楽だな〜」とか思いながらコードを提出した数秒後、エラー文を見て自分の考えの愚かさに気付かされた。

「int型の変数って比較できないのかorz」

変数にそのまま実数を入れてみるとエラーなく作動したので、Input()で数値を入力してもらってから比較する形式にしようとコードを変更

x = input()
a = input()
y = int(x)
b = int(a)

if y < b:
  print("0")
else:
  print("10")

これでも同じエラー。
この後何度もリトライし、RubyとC#でも記述してみたが同様のエラーで正解には至らず、私の心が絶望に染まっていく...

OT「一体どうすりゃいいんだよぉ...」

???「力が欲しいか?」

OT「だ、誰だ!?」

C++「我が名はC++。競技プログラミングでの使用率が最も高い言語の1つである。」

OT「(最も高い言語の1つってなんか日本語間違っている気もするけど)...C++!!あなたを使いこなせばこの問題を解くことができると言うんだな!?」

C++「無論。だが、心して使うんだぞ。我の記述量はPythonの比にならんからな」

【--C++が仲間になった--】

OT「C++...なんて難しい言語なんだ。だが、このサイト( http://cpp-lang.sevendays-study.com/index.html )で学習しながら書けば何とかなるかもしれない!!」

↓こうして仲間になったC++を使って書いたコードがこちら↓

#include <bits/stdc++.h>
using namespace std;

int main() {
  int X, A;
  cin >> X >> A;
  if (X < A){
    cout << "0";
  }
  else {
    cout << "10";
  } 
  return 0;
}

提出して無事、AC(正解)をいただくことができました!!8888888888888888888

ef389ac05dcd5a69ae36d84f26e2bdb0.png
これが今回の死に戻りヒストリー...始まりからクライマックスだった()

最後に

C++は書くことが多いし、いろんなサイトで習得難易度が高めに書かれてあるけど、使い勝手が良いのかもしれない。
そして、記述量が多いと言うことはそれだけ自分の思い通りの処理を実行することができるメリットでもあるのかもしれないと感じました。

あと、これPythonだとどう書けば正解になるのかわかる方いらっしゃれば教えて欲しいですm(_ _)m

ご拝読いただき、ありがとうございました!!

4
3
5

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
4
3