C#初心者がAtCoderを始める際に最低限必要な入出力を紹介する記事です。
特にC#であることにこだわりがない人はC++を使うことをお勧めします。使用人数がとても多いですし、AtCoder以外の多くのオンラインジャッジでも使用可能です。
出力処理
文字列(string)
サンプルコード
string A = "AtCoder";
Console.WriteLine(A);
出力
AtCoder
整数(int)
サンプルコード
int A = 123;
Console.WriteLine(A);
出力
123
浮動小数点数(float)
サンプルコード
float A = 0.123f;
Console.WriteLine(A);
出力
0.123
1次元配列
サンプルコード
int[] A = {1,2,3};
Console.WriteLine(string.Join("", A)); // 区切りなし
Console.WriteLine(string.Join(",", A)); // コンマ区切り
Console.WriteLine(string.Join(" ", A)); // スペース区切り
Console.WriteLine(string.Join("\r\n", A)); // 改行区切り
出力
123
1,2,3
1 2 3
1
2
3
2次元配列
サンプルコード
int[,] A = new string[2, 3] {{1,2,3},{4,5,6}};
Console.WriteLine(string.Join(",", A.Cast<int>()));
出力
1,2,3,4,5,6
入力処理
1行 / 1列
文字列(string)
入力
AtCoder
サンプルコード
string A = Console.ReadLine();
Console.WriteLine(A);
出力
AtCoder
整数(int)
入力
123
サンプルコード
int A = int.Parse(Console.ReadLine());
Console.WriteLine(A);
出力
123
浮動小数点数(float)
入力
0.123
サンプルコード
float A = float.Parse(Console.ReadLine());
Console.WriteLine(A);
出力
10
文字配列(char[])
入力
AtCoder
サンプルコード
char[] A = Console.ReadLine().ToCharArray();
Console.WriteLine(string.Join(",", A));
出力
A,t,C,o,d,e,r
1行 / 複数列
文字列配列(string[])
入力
I love AtCoder
サンプルコード
string[] A = Console.ReadLine().Split(' ');
Console.WriteLine(string.Join(",", A));
出力
I,love,AtCoder
整数配列(int[])
入力
10 20 30
サンプルコード
int[] A = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
Console.WriteLine(string.Join(",", A));
出力
10,20,30
浮動小数点数(float[])
入力
0.1 0.2 0.3
サンプルコード
float[] A = Console.ReadLine().Split(' ').Select(float.Parse).ToArray();
Console.WriteLine(string.Join(",", A));
出力
0.1,0.2,0.3
複数行 / 1列
最初の行に行数Nがある場合、N回値を読み込み、大きさNの配列に値を格納します。
入力
3
I
love
AtCoder
サンプルコード
int n = int.Parse(Console.ReadLine());
var A = new string[n];
for (int i = 0; i < n; i++) {
A[i] = Console.ReadLine();
}
Console.WriteLine(string.Join(",", A));
出力
I,love,AtCoder
行数が分からない場合、最後の行に到達するまで(Console.ReadLine()
がnullになるまで)値を読み込み、リストに値を格納します。
入力
I
love
AtCoder
サンプルコード
var A = new List<string>();
while (true) {
string line = Console.ReadLine();
if (line == null) break;
A.Add(line);
}
Console.WriteLine(string.Join(",", A));
出力
I,love,AtCoder
複数行 / 複数列
最初の行に行数Nおよび列数Mがある場合、N回値を読み込み、大きさN×Mの配列に値を格納します。
入力
3 4
1 2 3 4
5 6 7 8
9 10 11 12
サンプルコード
int[] nm = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
int n = nm[0];
int m = nm[1];
var A = new int[n][];
for (int i = 0; i < n; i++) {
A[i] = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
}
foreach (var a in A) {
Console.WriteLine(string.Join(",", a));
}
出力
1,2,3,4
5,6,7,8
9,10,11,12
行数および列数が分からない場合、最後の行に到達するまで(Console.ReadLine()
がnullになるまで)値を読み込み、リストに値を格納します。
入力
1 2 3 4
5 6 7 8
9 10 11 12
サンプルコード
var A = new List<List<int>>();
while (true) {
string line = Console.ReadLine();
if (line == null) break;
A.Add(line.Split(' ').Select(int.Parse).ToList());
}
foreach (var a in A) {
Console.WriteLine(string.Join(",", a));
}
出力
1,2,3,4
5,6,7,8
9,10,11,12
参考リンク