풀이방법 입력받은 숫자 num에서 가장 많은 수열을 이룰 수 있는 두번째 숫자 temp를 찾는다.temp가 될 수 있는 최소의 숫자는 num*0.618...이므로, 검사 횟수를 줄이기 위해 num*0.6을 최소한의 범위로 지정한다.수열의 개수를 세는 방법은 재귀로 구현한다. #include using namespace std; int check(int n, int t, int cnt) { if (n > num; for (int i = num * 0.6; i < num; i++) { int cnt = 0, ck; if..
문제 두번째 수를 임의로 잡습니다.첫째 수와 둘째 수는 배열의 길이를 확정해 줍니다그래서 maxCnt = 2로 정해줍니다. 모든 경우마다 배열의 size가 다르므로 시작은 size = 2로 초기화해줍니다.둘째 수의 선택은 임의로 첫째 수의 절반부터 시작됩니다.셋째 수부터는 box의 배열에 첫째수와 둘째수의 차를 대입합니다.n번째수도 앞의 수와 앞앞 수의 차로 해서 반복합니다. maxCnt보다 큰 배열이 나오면새로운tmp배열에 담아줍니다. #include using namespace std; int main() { int box[20] = { NULL }; int tmp[20] = { NULL }; int size, maxCnt = 2; int i, k = 0; cin >> box[0..
문제 #include using namespace std; /* 2016-06-01 옥상, 비밀번호:: 시간초과 */ int binari(int n, int check) { int cnt = 0; while (n) { if (check != 0 && check > 1; } return cnt; } int down(int n, int bin) { for (int i = n - 1; i > 0; --i) { if (binari(i, bin) == bin) return i; else continue; } return 0; } int up(int n, int bin) { for (int i = n + ..
비밀번호 수 이어가기