やるだけ
class SpiralWalking { public: int totalPoints(vector <string> levelMap) { const int di[] = {0, 1, 0, -1}; const int dj[] = {1, 0, -1, 0}; int i = 0; int j = 0; int d = 0; int sum = 0; const int h = levelMap.size(); const int w = levelMap[0].size(); for (int loop = h * w; loop--; ) { sum += (levelMap[i][j] - '0'); int tmp = d; if (loop == 0) break; while (true) { int ni = i + di[d]; int nj = j + dj[d]; if (ni < 0 || nj < 0) d = (d + 1) % 4; else if (h <= ni || w <= nj) d = (d + 1) % 4; else if (levelMap[ni][nj] == '@') d = (d + 1) % 4; break; } if (tmp != d) sum -= (levelMap[i][j] - '0'); levelMap[i][j] = '@'; i = i + di[d]; j = j + dj[d]; } return sum; } };