https://www.acmicpc.net/problem/3019
구현
#include <iostream>
using namespace std;
int field[100];
int main()
{
int C, P; // 열, 블록 번호
int ans = 0;
cin >> C >> P;
for (int i = 0; i < C; i++)
{
cin >> field[i];
}
switch (P)
{
case 1:
// h
ans += C;
// hhhh
for (int i = 0; i < C - 3; i++)
{
if (field[i] == field[i + 1] && field[i + 1] == field[i + 2] && field[i + 2] == field[i + 3])
{
ans++;
}
}
break;
case 2:
// hh
for (int i = 0; i < C - 1; i++)
{
if (field[i] == field[i + 1])
{
ans++;
}
}
break;
case 3:
for (int i = 0; i < C - 2; i++)
{
// h h h+1
if (field[i] == field[i + 1] && field[i] + 1 == field[i + 2])
{
ans++;
}
}
// h h-1
for (int i = 0; i < C - 1; i++)
{
if (field[i] - 1 == field[i + 1])
{
ans++;
}
}
break;
case 4:
for (int i = 0; i < C - 2; i++)
{
// h h-1 h-1
if (field[i] - 1 == field[i + 1] && field[i + 1] == field[i + 2])
{
ans++;
}
}
// h h+1
for (int i = 0; i < C - 1; i++)
{
if (field[i] + 1 == field[i + 1])
{
ans++;
}
}
break;
case 5:
for (int i = 0; i < C - 2; i++)
{
// hhh
if (field[i] == field[i + 1] && field[i + 1] == field[i + 2])
{
ans++;
}
// h h-1 h
if (field[i] - 1 == field[i + 1] && field[i] == field[i + 2])
{
ans++;
}
}
for (int i = 0; i < C - 1; i++)
{
// h h+1
if (field[i] + 1 == field[i + 1])
{
ans++;
}
// h h-1
if (field[i] - 1 == field[i + 1])
{
ans++;
}
}
break;
case 6:
for (int i = 0; i < C - 2; i++)
{
// hhh
if (field[i] == field[i + 1] && field[i + 1] == field[i + 2])
{
ans++;
}
// h h+1 h+1
if (field[i] + 1 == field[i + 1] && field[i + 1] == field[i + 2])
{
ans++;
}
}
for (int i = 0; i < C - 1; i++)
{
// h h-2
if (field[i] - 2 == field[i + 1])
{
ans++;
}
// hh
if (field[i] == field[i + 1])
{
ans++;
}
}
break;
case 7:
for (int i = 0; i < C - 2; i++)
{
// hhh
if (field[i] == field[i + 1] && field[i + 1] == field[i + 2])
{
ans++;
}
// h h h-1
if (field[i] == field[i + 1] && field[i] - 1 == field[i + 2])
{
ans++;
}
}
for (int i = 0; i < C - 1; i++)
{
// hh
if (field[i] == field[i + 1])
{
ans++;
}
// h h+2
if (field[i] + 2 == field[i + 1])
{
ans++;
}
}
break;
default:
break;
}
cout << ans;
}