たなしょのメモ

日々勉強していることをつらつらと

C - Distinct or Not

はじめに

たなしょです。

C問題解けました。

やっぱり嬉しいですね

問題文

atcoder.jp

考え方

入力した数だけlong long型の配列を取得してデータを入れます。

int a;
cin >> a;

vector<ll> data(a);

for (int i = 0; i < a; i++) {
    cin >> data[i];
}

昇順でソートして配列を並べ替えます。

(隣り合った数が同じか早く見つけたいため(降順でもいいですね))

sort(data.begin(), data.end(), greater<ll>());

配列にfor文を回してiとi+1が同じ数であれば、同じ数であることを知らせるflgを1にしてbreakします。

for文の後続ではflgが1か0(同じ数字が存在するかしないか)を確認して文字列を出力すれば完了です。

int flg = 0;

for (int i = 0; i < a-1; i++) {
    if (data[i] == data[i+1]) {
        flg = 1;
        break;
    }
}

if (flg == 0) {
    cout << "YES" << endl;
} else {
    cout << "NO" << endl;
}

いざ実装

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <iomanip>

typedef long long ll;

using namespace std;

int main(void)
{
    int a;
    cin >> a;

    vector<ll> data(a);

    for (int i = 0; i < a; i++) {
        cin >> data[i];
    }

    sort(data.begin(), data.end(), greater<ll>());

    int flg = 0;

    for (int i = 0; i < a-1; i++) {
        if (data[i] == data[i+1]) {
            flg = 1;
            break;
        }
    }

    if (flg == 0) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }



    return 0;
}

最後に

続けていけば確実に力になりますね!

最後まで読んでいただいてありがとうございました。 もしよろしければtwitterアカウント(@piklus100yen)もフォローしていただけると幸いです!