Out Of Bounds 로 틀리다가, 조건문 추가해서 맞았다 ..
#include <bits/stdc++.h>
#define limit 10002
using namespace std;
bool arr[limit];
int check(int num){ // 자기자신과 각 자리 숫자를 더한다
int sum = num;
while(num != 0){
sum += num % 10; // 1의 자리 숫자를 더한다
num /= 10; // 다음 자리 숫자가 나오도록 나눈다
}
return sum;
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
for(int i = 1; i <limit; i++){
int idx = check(i);
if(idx <= limit) arr[idx] = true;
}
for(int i = 1; i <limit; i++) if(!arr[i]) cout << i << '\n';
return 0;
}
Out Of Bounds 틀렸던 이유
셀프 넘버는 원래 숫자보다 크게 나온다. 자기자신과 자기자신의 각 자리숫자를 더하기 때문이다.
arr배열 크기가 10002 인데. 아래 처럼 idx를 무조건 접근하면 Out Of Bounds 발생한다.
for(int i = 1; i <limit; i++){
int idx = check(i);
arr[idx] = true;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
경로 찾기 백준 11403번 c++ (0) | 2022.02.23 |
---|---|
다리 놓기 백준 1010번 c++ (0) | 2022.02.23 |
명령 프롬프트 백준 1032번 c++ (0) | 2022.02.22 |
저항 백준 1076번 c++ (0) | 2022.02.22 |
크로아티아 알파벳 백준 2941번 c++ (0) | 2022.02.22 |