トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.182 新規性の虜
■■■問題■■■
kamipeipaa君は新しいものが大好きです。
kamipeipaa君はある日N個の整数A1,A2,A3,....,ANを見つけました。
整数Aiに対して,Ai=Ajとなるjがi以外に存在しなければ,
Aiは新規性があるのではないかとkamipeipaa君は考えました。
上記の条件を満たす整数がいくつあるかkamipeipaa君に教えてあげてください。
■■■入力■■■
N
A1 A2 ・・・ AN
1行目にkamipeipaa君が見つけた数の総数N(1 <= N <= 10万)が与えられる。
2行目にkamipeipaa君が見つけた数A1,A2, ・・・ ,AN(1 <= Ai <= 10億)が空白区切りで与えられる。
■■■出力■■■
条件を満たすようなものの数を1行に出力せよ。改行を忘れないこと。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input4";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("5");
WillReturn.Add("1 1 2 3 3");
//1
//新規性がありそうなものは2のみです。
}
else if (InputPattern == "Input2") {
WillReturn.Add("6");
WillReturn.Add("1 1 1 1 1 1");
//0
//全く新規性がなさそうなこともあります。
}
else if (InputPattern == "Input3") {
WillReturn.Add("6");
WillReturn.Add("1 2 3 4 5 6");
//6
//全て新規性がありそうなこともあります。
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int[] AArr = InputList[1].Split(' ').Select(X => int.Parse(X)).ToArray();
var Tmp = AArr.GroupBy(X => X).Where(X => X.Count() == 1);
Console.WriteLine(Tmp.Count());
}
}
解説
LINQのGroupByメソッドでグループ化してから、
件数が1のグループの数を調べてます。