週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

競技プログラミング メモ【配列関連】【C#】


競技プログラミングで使用する配列系の文法を記述します。

配列系

配列を逆順にする

char[] sa = "何かしら";
char[] r_sa = sa.Reverse().ToArray();

特定の文字の個数を文字列中から検索

//文字列Sから”A"の個数を検索
string S = Console.ReadLine();
S.Where(x=>x=='A').Count();

配列の重複要素を削除する

//配列Aの重複要素を削除した配列hs1
int[] A = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
HashSet<int> hs1 = new HashSet<int>(A);

文字列を追加する+同じ文字を並べる

string ans = new string('U',3);//UUU
ans += new string('R',3);//UUURRR

カウント

配列Aに含まれる1の個数を数える場合

import System.Linq;
A.Count(x=>x==1)

条件に一致する値を見つけたら出力する

//n配列の中に2で割り切れる物がある場合、0を出力する
var n = Console.ReadLine().Split().Select(long.Parse).toArray();
if(Array.Exists(n,(a) => { return a % 2 == 0; })) {
	Console.WriteLine(0);
}

文字列sのi番目と文字列tの0〜n-i番目の文字が一致していたらbreak;

if(s.Substring(i) == t.Substring(0, n - i)){
break;
}

インデックス番号を取得する

使用可能なのは、String型でIndexOfあるいはList型でIndexOf
型を柔軟に変更しやすいList型を使用するのが良い。

int[] nm = Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
List<int> disclist = Enumerable.Range(1, nm[0]).ToList();
disc = 2;
<span style="color: #ff5252">int index = disclist.IndexOf(disc);</span>