분류: 수학, 구현, 부르트포스 알고리즘
#include <iostream>
using namespace std;
int sum[10000] = { 0, };
int main() {
bool selfNum[10000];
fill_n(selfNum, 10000, true);
for (int n = 0; n<10000; ++n) {
if (n >= 1000) {
sum[n] = n / 1000 * 1000 + sum[n % 1000] + n / 1000;
if (sum[n] >= 10000) continue;
selfNum[sum[n]] = false;
}
else if (n >= 100) {
sum[n] = n / 100 * 100 + sum[n % 100] + n / 100;
selfNum[sum[n]] = false;
}
else if (n >= 10) {
sum[n] = n / 10 * 10 + sum[n % 10] + n / 10;
selfNum[sum[n]] = false;
}
else {
sum[n] = n * 2;
selfNum[sum[n]] = false;
}
}
for (int i = 0; i < 10000; ++i)
if (selfNum[i] == true) printf("%d\n", i);
return 0;
}
분류: 수학, 정수론, 소수판정, 에라토스테네스의 체
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, num, count = 0;
cin >> n;
int i = 0;
bool prime = true;
for (int i = 0; i < n; ++i) {
cin >> num;
prime = true;
if (num == 0 || num == 1) {
prime = false;
continue;
}
if (num == 2 || num == 3) ++count;
else {
for (int j = 2; j <= sqrt(num); ++j) {
if (num % j == 0) {
prime = false;
}
}
if (prime) ++count;
}
}
printf("%d", count);
return 0;
}
분류: 구현, 문자열
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string alpha[8] = { "c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=" };
string voca;
cin >> voca;
int count = 0;
int index;
for (string s : alpha) {
if (voca.empty()) break;
index = voca.find(s);
while(index >= 0) {
++count;
voca.replace(index, s.size(), " ");
index = voca.find(s);
}
}
voca.erase(remove(voca.begin(), voca.end(), ' '), voca.end());
count += voca.size();
printf("%d", count);
return 0;
}
분류: 구현, 문자열
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isGroup(string s) {
vector<char> containedChar;
char now;
now = s[0];
while(!s.empty()) {
if (!containedChar.empty() && now == s[0]) {
s.erase(s.begin());
continue;
}
else if (find(containedChar.begin(), containedChar.end(), s[0]) != containedChar.end()) {
return false;
}
containedChar.push_back(now);
now = s[0];
s.erase(s.begin());
}
return true;
}
int main() {
int n, count = 0;
cin >> n;
string input;
for (int i = 0; i < n; ++i) {
cin >> input;
if (isGroup(input)) ++count;
}
printf("%d", count);
return 0;
}
목표는 코드 길이 줄이기, 더 간단히 접근하기