競技プログラミングでのよくある入力
競技プログラミングでは,必ず入力数が指定されるため,どのぐらい回帰すればいいのかわかります.
数字がしていされたり,
ABC262 B
写真はないですが,なんかの文字が入力されたら終了といったりするものが多いです.
コーディングテストでの入力
しかし,企業のコーディングテストでは,入力の行数が指定されていない場合や、入力の終了タイミングが不明な場合があります.
そんなときは,getline()関数を用いて標準入力から行を読み込む方法が効果的!!
この関数は,指定されたストリームから一行を読み込みます.特に, EOF(End-Of-File)に達するまで続けて入力を読み込むことが可能です.
いかに具体的なコードを書きます
↓
test.cpp
#include<iostream>
#include<vector>
#include<string>
#include<sstream>
using namespace std;
int main() {
string line;
vector<string> lines;
while (getline(cin, line)) {
if (!line.empty()) {
lines.push_back(line);
}
}
for(int i = 0;i < lines.size();i++){
cout << i << "行目:" << line[i] << endl;
}
}
入力
make sushi 10
eat sushi
like Tom tuna
like Rika tuna
made sushi Tom
出力
0行目:make sushi 10
1行目:eat sushi
2行目:like Tom tuna
3行目:like Rika tuna
4行目:made sushi Tom
まとめ
このように,入力数が指定されていなくても,入力を最後まで読み込むことが可能です!
競技プログラミングではめったに出会わないような入力方法ですよね...
アルゴリズムはわかっていても,入力方法に時間を取られていてはもったいないので是非とも覚えておいてください!!!