えんじにあ備忘録

脱よわよわエンジニアを目指すブログ

AtCoder Beginner Contest 282に参加しました&反省会

AtCoder Beginner Contest 282の振り返り

  • A・C問題は解くことができたが、B問題は落とした
  • A・C問題ともに方針こそ合っていたがスムーズな実装とはいかず、時間がかかった
  • B問題でエラーの発生箇所を見誤り時間を浪費した

A - Generalized ABC

atcoder.jp

考えたこと

  • 入力に応じて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

atcoder.jp

考えたこと

  • 与えられた文字列を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

atcoder.jp

考えたこと

  • "が1つのときは括られた文字列扱いする
  • "でtrue/falseを切り替える
  • 括られていない,の位置を配列に格納しまとめて.に置換する
    →replaceメソッドを使ったが、for文中で代入するだけで済むようだ