Skip to content

Commit d26fca8

Browse files
Gunwoo ParkGunwoo Park
authored andcommitted
make-one v1.1.
1 parent 6539337 commit d26fca8

File tree

2 files changed

+22
-37
lines changed

2 files changed

+22
-37
lines changed

1463_Make_One/a.exe

-25.1 KB
Binary file not shown.

1463_Make_One/make_one.cpp

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ using namespace std;
1010
2.2. 2로 한번만 나눌 수 있는 경우 -> -1을 해서 3으로 나눌 수 있으면 그렇게 가고, 아니면 2로 나눈다.
1111
3. 1, 2에 포함되지 않는경우 -1을 한다.
1212
13-
CLASS Pair
14-
1. number
15-
2. count
16-
1713
vector<Pair> memo
1814
1915
int recur_fuc
@@ -32,47 +28,33 @@ int recur_fuc
3228
1. GET count from recursive func
3329
2. PRINT recursive func
3430
*/
35-
struct Pair {
36-
int number;
37-
int count;
38-
};
39-
40-
vector<Pair*> memo;
41-
42-
int search_memo(int input) {
43-
if (!memo.empty())
44-
for (int i = memo.size() - 1; i >= 0; --i)
45-
if (memo[i]->number == input) {
46-
return memo[i]->count;
47-
}
48-
return 1;
49-
}
31+
int memo[1000001]
32+
;
5033

51-
int making_one_calculating_count(int input) {
34+
int main_func(int input) {
5235
if (input == 1)
5336
return 0;
5437

55-
int count = search_memo(input);
56-
if (count != 1)
38+
int count = memo[input];
39+
if (count) {
40+
//cout << input << " : " << count << '\n';
5741
return count;
42+
}
5843

59-
int adder;
60-
if ((input % 3) == 0)
61-
adder = making_one_calculating_count(input / 3);
62-
if ((input % 2) == 0) {
63-
int temp = making_one_calculating_count(input / 2);
44+
int adder = 1000000;
45+
if (!(input % 3))
46+
adder = main_func(input / 3);
47+
if (!(input % 2)) {
48+
int temp = main_func(input / 2);
6449
adder = ((temp < adder) ? temp : adder);
6550
}
66-
int temp = making_one_calculating_count(input - 1);
51+
int temp = main_func(input - 1);
6752
adder = ((temp < adder) ? temp : adder);
6853

69-
count += adder;
54+
count = adder + 1;
7055

71-
Pair* tempPair = new Pair;
72-
tempPair->number = input;
73-
tempPair->count = count;
74-
memo.push_back(tempPair);
75-
cout << input << '\n';
56+
memo[input] = count;
57+
//cout << "memoed: memo[" << input << "] is: " << count << '\n';
7658
return count;
7759
}
7860

@@ -82,8 +64,11 @@ int main() {
8264

8365
int input;
8466
cin >> input;
85-
int count = making_one_calculating_count(input);
86-
cout << input;
87-
cout << endl << count;
67+
int count = main_func(input);
68+
cout << count << '\n';
69+
70+
//for (int i = 0; i <= input; ++i)
71+
//cout << memo[i] << ' ';
72+
8873
return 0;
8974
}

0 commit comments

Comments
 (0)