728x90
반응형
문제 1. 정수 N개의 합
#include <vector>
using namespace std;
long long sum(vector<int>& a) {
long long ans = 0;
for (int i = 0; i < a.size(); i++) {
ans += a.at(i);
}
return ans;
}
문제 2. 셀프 넘버
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int selfnumber(int a) {
int digit = to_string(a).size(), tmp = 0, a_copy = a, sum = a;
int* arr = new int[digit];
for (int i = 0; i < digit; i++) {
tmp = pow(10, (digit - (i + 1)));
arr[i] = a_copy / tmp;
a_copy %= tmp;
}
for (int i = 0; i < digit; i++) {
sum += arr[i];
}
return sum;
}
int main() {
int a = 10000;
cin.tie(NULL);
cin.sync_with_stdio(false);
int* arr = new int[a];
for (int i = 0; i < a; i++) {
arr[i] = 0;
}
for (int i = 0; i < a; i++) {
arr[selfnumber(i)-1]++;
}
for (int i = 0; i < a; i++) {
if (arr[i] == 0) {
cout << i+1 << endl;
}
}
return 0;
}
문제 3. 한수
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
bool hansu(int a) {
bool is_flag = false;
int tmp, cnt = 0;
int digit = to_string(a).size();
if (digit > 2) {
int* arr = new int[digit];
for (int i = 0; i < digit; i++) {
tmp = pow(10, (digit - (i + 1)));
arr[i] = a / tmp;
a %= tmp;
}
int now_dif = 0;
int pre_dif = arr[0] - arr[1];
for (int i = 0; i < digit - 1; i++) {
now_dif = arr[i] - arr[i + 1];
if (now_dif == pre_dif) cnt++;
pre_dif = now_dif;
}
if (digit - 1 == cnt) {
is_flag = true;
}
}
else {
is_flag = true;
}
return is_flag;
}
int main() {
int a = 0, cnt = 0;
cin.tie(NULL);
cin.sync_with_stdio(false);
cin >> a;
for (int i = 1; i <= a; i++) {
if (hansu(i)) cnt++;
}
cout << cnt << endl;
return 0;
}
결과
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기 > 기본 수학 2 (c++) (0) | 2022.01.19 |
---|---|
[백준] 단계별로 풀어보기 > 기본 수학 1 (c++) (0) | 2022.01.18 |
[백준] 단계별로 풀어보기 > 문자열 (c++) (0) | 2022.01.15 |
[백준] 단계별로 풀어보기 > 1차원 배열 (c++) (0) | 2022.01.14 |
[백준] 단계별로 풀어보기 > while문 (c++) (0) | 2022.01.14 |
[백준] 단계별로 풀어보기 > for문 (c++) (0) | 2022.01.13 |
댓글