어글리 넘버는 결국 이전의 어글리넘버(seed) * 2 or * 3 or * 5라는 생각으로 넉넉한(답을 이미 알기에 ㅎㅎ) 싸이즈의 불리언맵핑 배열을 만들어 어글리한지 확인하려는 수의 seed가 어글리했는지를 확인하는 방법으로 서치 시간을 엄청나게 줄였다고 자부했는데... 결과는...망했음. {{{ #include using namespace std; #define RANK 1500 #define MAX 999999999 bool uglyMap[MAX]; bool isUgly(int number){ if(number%2 == 0){ number/=2; } else if(number%3 == 0){ number/=3; } else if(number%5 == 0){ number/=5; } else{ return false; } if(uglyMap[number] == true) return true; else return false; } int main(){ //for(int i = 0; i < MAX; i++) // uglyMap[i] = false; uglyMap[1] = true; uglyMap[2] = true; uglyMap[3] = true; uglyMap[4] = true; uglyMap[5] = true; int count = 5; int number = 5; while(count < RANK){ number++; if(isUgly(number)){ uglyMap[number] = true; count++; } } cout << number; return 0; } /* #include using namespace std; bool isUgly(int number){ while(number%2 == 0){ number /= 2; if(number == 1) return true; } while(number%3 == 0){ number /= 3; if(number == 1) return true; } while(number%5 == 0){ number /= 5; if(number == 1) return true; } return false; } int main(){ int count = 1; int number = 1; while(count < 100){ number++; if(isUgly(number)){ count++; } } cout << number; return 0; }*/ }}}