반응형
#include<iostream>
using namespace std;
int main(){
int numbers[10001];
int temp, temp1, temp2, temp3, temp4;
for(int i=1; i<10001; i++){
numbers[i-1] = i;
}
for(int i=1; i<10001; i++){
if(i<10){
temp = i + i;
numbers[temp-1] = -1;
}else if(i<100){
temp = i/10;
temp1 = i%10;
temp2 = i + temp + temp1;
numbers[temp2-1] = -1;
}else if(i<1000){
temp = i%10;
temp1 = (i/10)%10;
temp2 = (i/100);
temp3 = temp + temp1 + temp2 + i;
numbers[temp3-1] = -1;
}else if(i<10000){
temp = i%10;
temp1 = (i/10)%10;
temp2 = (i/100)%10;
temp3 = (i/1000);
temp4 = temp + temp1 + temp2 + temp3 + i;
if(temp4-1 <= 10000){
numbers[temp4-1] = -1;
}else{
continue;
}
}else if(i == 10000){
numbers[i-1] = -1;
}
}
for(int i=0; i<10000; i++){
if(numbers[i] == -1){
continue;
}else{
printf("%d \n", numbers[i]);
}
}
}
설명
코드가 내가 봐도 상당히 더럽다. numbers라는 크기 10001의 배열을 선언하고, 1부터 10000까지 채워준다. 그 후 for문에서 1-10000까지로 만들 수 있는 셀프 넘버가 아닌 수를 다 찾고, numbers의 찾은 수 번째 인덱스를 -1 해준다. 다 마친 후에 -1인 것만 출력을 안하면 된다.
문제점
실수로 배열의 크기가 넘는 값을 참조하는 에러가 나서 런타임에러가 났다.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 2920번: 음계 c++ 코드(구현) (0) | 2021.07.21 |
---|---|
백준 1924번: 2007년 c++ 코드(구현) (0) | 2021.07.21 |
백준 2667번: 단지번호붙이기 C++ 코드(BFS) (0) | 2021.07.20 |
백준 12764번: 싸지방에 간 준하 파이썬 코드(우선순위 큐) (3) | 2021.07.13 |
백준 2109번: 순회강연 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |