단계별로 풀어보기에서 순서대로 백준 문제를 풀고있던중 백준 문제를 풀다 보면 같은 숫자의 개수를 세는 문제가 많이 나왔다.
그래서 한번 어떤 것들이 있는지 정리해보고 싶어졌다.
#include <iostream>
using namespace std;
int main() {
int n[10];
int cnt[10] = {0};
for (int i = 0; i < 10; i++) {
cin >> n[i];
cnt[n[i]]++;
if (cnt[n[i]] > 1) {
cout << n[i] << "가 여러개 있습니다." << endl;
}
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n[10];
for (int i = 0; i < 10; i++) {
cin >> n[i];
}
sort(n, n + 10);
int count = 1;
for (int i = 1; i < 10; i++) {
if (n[i] == n[i - 1]) {
count++;
}
else {
cout << n[i - 1] << "가 " << count << "개 있습니다." << endl;
count = 1;
}
}
cout << n[9] << "가 " << count << "개 있습니다." << endl;
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n[10];
for (int i = 0; i < 10; i++) {
cin >> n[i];
}
vector<int> checked;
for (int i = 0; i < 10; i++) {
if (find(checked.begin(), checked.end(), n[i]) != checked.end()) {
continue;
}
checked.push_back(n[i]);
int count = count_if(n, n + 10, [n, i](int x) { return x == n[i]; });
cout << n[i] << "가 " << count << "개 있습니다." << endl;
}
return 0;
}
n[i]를 입력받을 때 중복되는 요소를 찾기 때문에 중간에 sort하는 코드보다 코드가 더 효율적이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n[10];
vector<int> num;
for (int i = 0; i < 10; i++) {
cin >> n[i];
if (find(num.begin(), num.end(), n[i]) == num.end()) {
num.push_back(n[i]);
}
}
for (int i = 0; i < num.size(); i++) {
int count = 0;
for (int j = 0; j < 10; j++) {
if (num[i] == n[j]) {
count++;
}
}
cout << num[i] << "가 " << count << "개 있습니다." << endl;
}
return 0;
}