ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

AtCoder Beginner Contest 154 C - Distinct or Not

雪は降らないですが雨が多いですね、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc154/tasks/abc154_c)にて開催されました、AtCoder Beginner Contest 154 C問題「C - Distinct or Not」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

整数列 A 1 , A 2 , . . . , A N が与えられます。 この整数列のどの 2 つの要素も互いに異なるならば YES を、そうでないなら NO を出力してください

2.制約

  • 2 ≤ N ≤ 200000
  • 1 ≤ A i ≤ 109
  • 入力は全て整数

3.入出力例

  • 入力
6
4 1 3 1 6 2
  • 出力
NO

4.初見の感想

  • 同じ数字が前に出ているかをfor文ループ処理すれば求められる
  • この手法はTLE

5.学びポイント

  • Sortして連続する2つの数を同じか判定

6.コードと簡単な解説

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

class Program
{
    public static void Main()
    {
        int N = int.Parse(Console.ReadLine());
        string []input=Console.ReadLine().Split();
        int []A = new int[N];
        string flag = "YES";
        for (int i = 0; i < N; i++)
        {
            A[i] = int.Parse(input[i]);
        }
        //ソート
        Array.Sort(A);
        for (int i = 1; i < N; i++)
        {
            //連続する2数が同じか判定
            if (A[i] == A[i - 1]) { flag = "NO"; }
        }
        Console.WriteLine(flag);
    }
}

7.最後に

制約条件見落としがちですね~