トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
第2回 CodeIQプロコン 1問目 ロックオン!
■■■問題■■■
矩形に配置された文字列データが与えられます。
その中に、急所を表す文字「*」の場所を見つけ、その座標を答えてください。
幅W、高さHの矩形について、左上を(1, 1)、右下を(W, H)とします。
■■■入力■■■
標準入力から、1行目に矩形文字列データの幅Wと高さHが、半角スペースで区切られた状態で与えられます。
2行目以降のH行には、幅Wの文字列が与えられます。文字列データに使われる文字は「#」または「*」のみです。
■■■出力■■■
標準出力に、急所を表す「*」の座標を出力してください。
座標は横方向・縦方向の順に、半角スペースで区切り、1行で出力してください。
※1オリジンであることにご注意ください。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("6 8");
WillReturn.Add("######");
WillReturn.Add("######");
WillReturn.Add("######");
WillReturn.Add("##*###");
WillReturn.Add("######");
WillReturn.Add("######");
WillReturn.Add("######");
WillReturn.Add("######");
//3 4
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int[] wkArr = InputList[0].Split(' ').Select(X => int.Parse(X)).ToArray();
int W = wkArr[0];
int H = wkArr[1];
for (int LoopH = 1; LoopH <= H; LoopH++) {
for (int LoopW = 1; LoopW <= W; LoopW++) {
if (InputList[LoopH][LoopW - 1] == '*') {
Console.WriteLine("{0} {1}", LoopW, LoopH);
return;
}
}
}
}
}
解説
ナイーブに実装してます。