AtCoder Beginner Contest 282に参加しました&反省会
AtCoder Beginner Contest 282の振り返り
- A・C問題は解くことができたが、B問題は落とした
- A・C問題ともに方針こそ合っていたがスムーズな実装とはいかず、時間がかかった
- B問題でエラーの発生箇所を見誤り時間を浪費した
A - Generalized ABC
考えたこと
- 入力に応じてchar型のA、B、Cと結合し最後にまとめて出力する(実装例では都度出力)
→char型の初期値をAにし、for文で回す
→for文の初期値を誤ったために、いらないif文が必要になった
実装例
for(int i = 0; i < k; i++) {
cout << char('A' + i);
}
string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << s.substr(0, K) << endl; //Kは出力する個数
B - Let's Get a Perfect Score
考えたこと
- 与えられた文字列をfor文で回す
- 2つの文字列を比較し、文字列すべてでどちらかが'o'だったらカウントアップする
実装例
// nは人数、mは問題数、resは解答を格納する変数
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
bool ok = true;
for (int k = 0; k < m; k++) {
if (s[i][k] == 'x' && s[j][k] == 'x') ok = false;
if (ok) res += 1;
}
}
}
C - String Delimiter
考えたこと
"
が1つのときは括られた文字列扱いする"
でtrue/falseを切り替える- 括られていない
,
の位置を配列に格納しまとめて.
に置換する
→replaceメソッドを使ったが、for文中で代入するだけで済むようだ