よくある「集計処理」の問題!
問題概要
10 個の数字 0〜9 のうちから 1 つを除外した 9 個の数字からなる文字列 が与えられる。
10 個の数字 0〜9 のうち、この文字列に含まれない数字を答えよ。
考えたこと
この手の問題では、次のような配列(バケットと呼ばれる)を考えるとよい。
exist[v]
← 文字列 の中に数字 が含まれるかどうか (True / False)
この配列 exist
を作ってしまえば、あとは exist[i] = false
となる を答えればよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; vector<bool> exist(10, false); for (int i = 0; i < S.size(); i++) { exist[S[i] - '0'] = true; } for (int i = 0; i < 10; ++i) { if (!exist[i]) { cout << i << endl; break; } } }