問題
問題文
すぬけ君は $1, 2, 3$ の番号がついた $3$ つのマスからなるマス目を持っています。 各マスには $0$ か $1$ が書かれており、マス $i$ には $s_i$ が書かれています。
すぬけ君は $1$ が書かれたマスにビー玉を置きます。 ビー玉が置かれるマスがいくつあるか求めてください。
制約
・$s_1, s_2, s_3$ は 1 あるいは 0
収録されている問題セット
回答
回答1 (AC)
$s_i$ の値を変数 s に取り込み、i 文字目 s.at(i) に $1$ が書かれているかどうかをチェックし、見つけた個数 answer え出力します。以下のコードでACとなりました。
abc081a-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int answer = 0;
for ( int i=0; i<3; i++ ) {
if ( s.at(i)=='1' ) {
answer += 1;
}
}
cout << answer << endl;
}
回答2 (AC)
文字列の長さが $3$ であることに着目し、文字列そのものを判断して答えを出力するようにしてみました。
abc081a-2.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
if ( s=="111" ) {
cout << 3 << endl;
} else if ( s=="011" || s=="101" || s=="110" ) {
cout << 2 << endl;
} else if ( s=="100" || s=="010" || s=="001" ) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
}
調べたこと
[AtCoder に登録したら次にやることの解説] (https://qiita.com/drken/items/fd4e5e3630d0f5859067#%E7%AC%AC-2-%E5%95%8F--abc-081-a---placing-marbles-100-%E7%82%B9)
A 問題は for 文を使わなくても解けるようになっていることを示すために、for 文を使わずに、インライン展開した方法が紹介されていました。
AtCoder の解説 → コンテスト全体の解説
こちらも for 文を使わない方法が紹介されていました。
学んだこと
- C++ の標準入力 (文字型)
リンク
前後の記事
- 前の記事 → AtCoderログ:0009 - ABC 208 C
- 次の記事 → AtCoderログ:0011 - ABC 095 A