AtCoder Beginners Selection は全部解いたので、次は AtCoder Beginner Contest の過去問を解くことにした。
左上から順に全探索しつつ、現在のマスが .
だったら、接しているマスに #
が何個あるかを数えて出力していく。
using System; using System.Collections.Generic; namespace ABC075B { class Program { static void Main(string[] args) { var input = Console.ReadLine().Split(' '); var H = int.Parse(input[0]); var W = int.Parse(input[1]); var S = new List<string>(); for (var i = 0; i < H; i++) { S.Add(Console.ReadLine()); } for (var i = 0; i < H; i++) { for (var j = 0; j < W; j++) { if (S[i][j] == '#') { Console.Write('#'); } else { var count = CountBomb(S, j, i); Console.Write(count); } } Console.WriteLine(); } } static int CountBomb(List<string> S, int x, int y) { var count = 0; for (var i = y - 1; i <= y + 1; i++) { if (i < 0 || S.Count <= i) { continue; } for (var j = x - 1; j <= x + 1; j++) { if (j < 0 || S[i].Length <= j || (i == y && j == x)) { continue; } if (S[i][j] == '#') { count++; } } } return count; } } }