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

+ Recent posts