문제출처 : https://www.acmicpc.net/problem/9082
code
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int T, i, N;
string S, mine;
cin >> T;
while (T)
{
int result = 0;
cin >> N;
cin >> S;
cin >> mine;
for (i = 0; i < N; i++)
{
if (i == 0)
{
if (S[0] != '0' && S[1] != '0')
{
S[0]--;
S[1]--;
result++;
}
}
else if (i == N - 1)
{
if (S[N - 1] != '0' && S[N - 2] != '0')
{
S[N - 1]--;
S[N - 2]--;
result++;
}
}
else
{
if (S[i - 1] != '0' && S[i] != '0' && S[i + 1] != '0')
{
S[i - 1]--;
S[i]--;
S[i + 1]--;
result++;
}
}
}
cout << result << '\n';
T--;
}
return 0;
}
저번에 풀어본 지뢰찾기랑 거의 비슷한데 이 문제가 더 푸는데 쉬웠다.
그냥 배열돌면서 +-1범위안에 0이 하나라도 있으면 지뢰가 없다는 의미이므로 반복문을 돌면서 0이 없으면 지뢰갯수++하고, S배열에 -1씩한다. 0이 있으면 그냥 넘어가면 된다.