【C#で競プロ】ABC107のBに手こずる
DFSとかの問題で見たことある問題の形式。
単純に入出力を調整するだけの問題だけど、どんなデータ型にしよかで迷う。List<char>
でループ中に削除すると、インデックスがずれちゃうとか。
だから逆順に対象を削除していったり。
こういう典型的な入出力のパターン、どういうデータ構造にしようかとか迷うのは時間の無駄なので、何かしら事前に自分の中でも法則を作っとかないと。
というか、今年中に緑行きたいとか思ってたけど、コンテストにも全然参加できてないし、アルゴリズムも全然勉強できてない。やばい。
ま、それでも諦めず、気長にやってこう。
https://atcoder.jp/contests/abc107/tasks/abc107_b
using System;
using System.Collections.Generic;
using System.Linq;
namespace Atcoder
{
class Program
{
static void Main(string[] args)
{
var input = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
var H = input[0];
var W = input[1];
List<List<char>> row = new List<List<char>>();
for (int i = 0; i < H; i++)
{
var tmp = Console.ReadLine();
if (tmp.Any(x => x == '#'))
{
row.Add(tmp.ToList());
}
}
for (int i = W - 1; i >= 0; i--)
{
bool delFlg = true;
for (int j = 0; j < row.Count; j++)
{
if (row[j][i] == '#')
{
delFlg = false;
break;
}
}
if (delFlg)
{
for (int j = 0; j < row.Count; j++)
{
row[j].RemoveAt(i);
}
}
}
foreach (var r in row)
{
Console.WriteLine(new string(r.ToArray()));
}
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません