0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaラーニングレベルアップ問題集の「配列活用メニュー」をLINQでやってみた。

0
Posted at

paizaラーニングレベルアップ問題集の配列活用メニューを、LINQ(Language-Integrated Query)を使ってやってみました。


指定の要素のカウント

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NK = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K) = (NK[0], NK[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		System.Console.WriteLine(A.Count(a => a == K));
	}
}

全ての要素の和

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		System.Console.WriteLine(A.Sum());
	}
}

配列の最大値

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		System.Console.WriteLine(A.Max());
	}
}

配列の最小値

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		System.Console.WriteLine(A.Min());
	}
}

指定要素があるかの判定

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NK = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K) = (NK[0], NK[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		System.Console.WriteLine(A.Any(a => a == K) ? "Yes" : "No");
	}
}

指定要素の先頭位置

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NK = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K) = (NK[0], NK[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int index = A
			.Select((a, i) => new { Id = i + 1, Value = a })
			.Where(a => a.Value == K)
			.Select(a => a.Id)
			.FirstOrDefault();
		if (index == 0) Console.WriteLine(-1);
		else Console.WriteLine(index);
	}
}

要素の種類数

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		Console.WriteLine(A.Distinct().Count());
	}
}

全ての要素に対する操作

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NK = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K) = (NK[0], NK[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.Select(a => a + K).ToArray();
		foreach (int b in B) Console.WriteLine(b);
	}
}

配列の順序の反転

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.Reverse().ToArray();
		foreach (int b in B) Console.WriteLine(b);
	}
}

変数の入れ替え

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] XY = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (X, Y) = (XY[0], XY[1]);
		(X, Y) = (Y, X);
		Console.WriteLine($"{X} {Y}");
	}
}

指定要素の入れ替え

using System;
using System.Linq;

public class Program
{
	static void Swap<T>(ref T a, ref T b)
	{
		(a, b) = (b, a);
	}

	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] XY = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (X, Y) = (XY[0] - 1, XY[1] - 1);
		Swap(ref A[X], ref A[Y]);
		foreach (int a in A) Console.WriteLine(a);
	}
}

末尾への要素の追加
using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		List<int> A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToList();
		int b = int.Parse(Console.ReadLine());
		A.Add(b);
		foreach (int a in A) Console.WriteLine(a);
	}
}

指定位置への要素の追加

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		List<int> A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToList();
		int[] nb = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (n, b) = (nb[0], nb[1]);
		A.Insert(n, b);
		foreach (int a in A) Console.WriteLine(a);
	}
}

指定要素の削除

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		List<int> A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToList();
		int n = int.Parse(Console.ReadLine()) - 1;
		A.RemoveAt(n);
		foreach (int a in A) Console.WriteLine(a);
	}
}

九九表

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[][] A = Enumerable.Range(1, 9).Select(i => Enumerable.Range(1, 9).Select(j => i * j).ToArray()).ToArray();
		foreach (int[] a in A) Console.WriteLine(String.Join(" ", a));
	}
}

全ての要素を用いた処理

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < i; j++)
			{
				Console.WriteLine(A[i] * A[j]);
			}
		}
	}
}

配列のサイズの変更

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] Nn = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, n) = (Nn[0], Nn[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		Array.Resize(ref A, n);
		foreach (int a in A) Console.WriteLine(a);
	}
}

重複要素の削除

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.Distinct().ToArray();
		foreach (int b in B) Console.WriteLine(b);
	}
}

条件を満たす要素のみの配列作成

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NK = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K) = (NK[0], NK[1]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.Where(a => a >= K).ToArray();
		foreach (int b in B) Console.WriteLine(b);
	}
}

傾斜配点

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] M = Console.ReadLine().Split().Select(int.Parse).ToArray();
		int[][] A = Enumerable.Range(0, N).Select(_ => Console.ReadLine().Split().Select(int.Parse).ToArray()).ToArray();
		Console.WriteLine(A.Select(a => a.Select((_, i) => M[i] * a[i]).Sum()).Max());
	}
}

内定

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NKM = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, K, M) = (NKM[0], NKM[1], NKM[2]);
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		Console.WriteLine(A.OrderByDescending(a => a).Where((a, i) => i >= M && a >= K).Count());
	}
}

queue(9)係

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		Queue<int> A = new Queue<int>();
		for (int i = 0; i < N; i++)
		{
			string[] s = Console.ReadLine().Split();
			if ("in".Equals(s[0]))
			{
				int n = int.Parse(s[1]);
				A.Enqueue(n);
			}
			else if ("out".Equals(s[0]))
			{
				if (A.Count > 0)
				{
					A.Dequeue();
				}
			}
		}
		while (A.Count > 0)
		{
			Console.WriteLine(A.Dequeue());
		}
	}
}

二人三脚

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] A = Enumerable.Range(0, N).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.OrderBy(a => a).ToArray();
		int[] D = Enumerable.Range(1, N - 1).Select(i => B[i] - B[i - 1]).ToArray();
		int k = Array.IndexOf(D, D.Min());
		Console.WriteLine(B[k]);
		Console.WriteLine(B[k + 1]);
	}
}

場所取り

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] NKF = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (K, F) = (NKF[1], NKF[2]);
		int[] A = Enumerable.Range(0, K).Select(_ => int.Parse(Console.ReadLine())).ToArray();
		int[] B = A.Where((_, i) => i >= F).Distinct().ToArray();
		foreach (int b in B) Console.WriteLine(b);
	}
}

ボウリング

using System;
using System.Linq;

public class Program
{
	public static void Main()
	{
		int[] P = Console.ReadLine().Split().Select(int.Parse)
			.Concat(Console.ReadLine().Split().Select(int.Parse))
			.Concat(Console.ReadLine().Split().Select(int.Parse))
			.Concat(Console.ReadLine().Split().Select(int.Parse))
			.Reverse().ToArray();
		Console.WriteLine(Array.IndexOf(P, 1) + 1);
		Console.WriteLine(P.Count(p => p == 1));
	}
}

集団行動

using System;
using System.Linq;

public class Program
{
	static void Swap<T>(ref T a, ref T b)
	{
		(a, b) = (b, a);
	}

	public static void Main()
	{
		int[] NQ = Console.ReadLine().Split().Select(int.Parse).ToArray();
		var (N, Q) = (NQ[0], NQ[1]);
		int[] A = Enumerable.Range(1, N).ToArray();
		for (int q = 0; q < Q; q++)
		{
			string[] s = Console.ReadLine().Split();
			if ("swap".Equals(s[0]))
			{
				var (a, b) = (int.Parse(s[1]) - 1, int.Parse(s[2]) - 1);
				Swap(ref A[a], ref A[b]);
			}
			else if ("reverse".Equals(s[0]))
			{
				A = A.Reverse().ToArray();
			}
			else if ("resize".Equals(s[0]))
			{
				int c = int.Parse(s[1]);
				if (c < A.Length)
				{
					Array.Resize(ref A, c);
				}
			}
		}
		foreach (int a in A)
		{
			Console.WriteLine(a);
		}
	}
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?