はじめに
たなしょです。
C問題解けました。
やっぱり嬉しいですね
問題文
考え方
入力した数だけ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)もフォローしていただけると幸いです!