728x90
1) 주석없는 VERSION
#include <iostream>
using namespace std;
int main() {
int array[10000] = { 1, };
int n;
for (int i = 1;i < 10000;i++) {
if (i < 10) {
array[i + i] = 1;
continue;
}
else if (i < 100) {
array[i + i / 10 + i % 10] = 1;
continue;
}
else if (i < 1000) {
array[i + i / 100 + i % 100 / 10 + i % 10] = 1;
continue;
}
else if (i < 10000) {
n = i + i / 1000 + i % 1000 / 100 + i % 100 / 10 + i % 10;
if (n < 10000) {
array[n] = 1;
continue;
}
}
}
for (int i = 1;i < 10000;i++) {
if (!array[i])
cout << i << "\n";
}
}
2) 주석있는 VERSION
#include <iostream>
using namespace std;
int main() {
int array[10000] = { 1, }; // 1부터 초기화
int n;
// 숫자를 10,100,1000,10000 구간으로 정해서
// 생성자인 것을 1로 정의
for (int i = 1;i < 10000;i++) {
if (i < 10) {
array[i + i] = 1;
continue;
}
else if (i < 100) {
array[i + i / 10 + i % 10] = 1;
continue;
}
else if (i < 1000) {
array[i + i / 100 + i % 100 / 10 + i % 10] = 1;
continue;
}
else if (i < 10000) {
n = i + i / 1000 + i % 1000 / 100 + i % 100 / 10 + i % 10;
if (n < 10000) { // 10000 넘는 값이 나오므로 따로 분기 처리
array[n] = 1;
continue;
}
}
}
for (int i = 1;i < 10000;i++) {
if (!array[i]) // 1이 아닌 값이 셀프 넘버 이므로
cout << i << "\n";
}
}
❌주의사항❌
◾ i<10000 에서 continue는 분기 처리 안에서
'BEAKJOON' 카테고리의 다른 글
백준(11654번 아스키 코드)풀이 C++ (0) | 2020.12.06 |
---|---|
백준(1065번 한수)풀이 C++ (0) | 2020.12.06 |
백준(15596번 정수 N개의 합)풀이 C++ (0) | 2020.12.06 |
백준(4344번 평균은 넘겠지)풀이 C++ (0) | 2020.12.05 |
백준(8958번 OX퀴즈)풀이 C++ (0) | 2020.12.05 |