티스토리 뷰
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <stdio.h> double Function(int arr[][20]) { double result1 = 0, result2 = 0, result3 = 0, result4 = 0; for (int i = 0; i < 20; ++i) { for (int j = 0; j < 17; ++j) { double temp = arr[i][j] * arr[i][j + 1] * arr[i][j + 2] * arr[i][j + 3]; if (result1 < temp) result1 = temp; } } for (int i = 0; i < 17; ++i) { for (int j = 0; j < 20; ++j) { double temp = arr[i][j] * arr[i + 1][j] * arr[i + 2][j] * arr[i + 3][j]; if (result2 < temp) result2 = temp; } } for (int i = 0; i < 17; ++i) { for (int j = 0; j < 17; ++j) { double temp = arr[i][j] * arr[i + 1][j + 1] * arr[i + 2][j + 2] * arr[i + 3][j + 3]; if (result3 < temp) result3 = temp; } } for (int i = 0; i <17; ++i) { for (int j = 0; j < 17; ++j) { double temp = arr[i][j + 3] * arr[i + 1][j + 2] * arr[i + 2][j + 1] * arr[i + 3][j]; if (result4 < temp) result4 = temp; } } double sort[4] = { result1,result2,result3,result4 }; for (int i = 0; i < 3; ++i) { for (int j = i + 1; j < 4; ++j) { if (sort[i] < sort[j]) { double temp = sort[j]; sort[j] = sort[i]; sort[i] = temp; } } } return sort[0]; } int main() { int arr[20][20] = { { 8 ,2 ,22 ,97 ,38 ,15 ,0 ,40 ,0 ,75 ,4 ,5 ,7 ,78 ,52 ,12 ,50 ,77 ,91 ,8 }, { 49 ,49 ,99 ,40 ,17 ,81 ,18 ,57 ,60 ,87 ,17 ,40 ,98 ,43 ,69 ,48 ,4 ,56 ,62 ,0 }, { 81 ,49 ,31 ,73 ,55 ,79 ,14 ,29 ,93 ,71 ,40 ,67 ,53 ,88 ,30 ,3 ,49 ,13 ,36 ,65 }, { 52 ,70 ,95 ,23 ,4 ,60 ,11 ,42 ,69 ,24 ,68 ,56 ,1 ,32 ,56 ,71 ,37 ,2 ,36 ,91 }, { 22 ,31 ,16 ,71 ,51 ,67 ,63 ,89 ,41 ,92 ,36 ,54 ,22 ,40 ,40 ,28 ,66 ,33 ,13 ,80 }, { 24 ,47 ,32 ,60 ,99 ,3 ,45 ,2 ,44 ,75 ,33 ,53 ,78 ,36 ,84 ,20 ,35 ,17 ,12 ,50 }, { 32 ,98 ,81 ,28 ,64 ,23 ,67 ,10 ,26 ,38 ,40 ,67 ,59 ,54 ,70 ,66 ,18 ,38 ,64 ,70 }, { 67 ,26 ,20 ,68 ,2 ,62 ,12 ,20 ,95 ,63 ,94 ,39 ,63 ,8 ,40 ,91 ,66 ,49 ,94 ,21 }, { 24 ,55 ,58 ,5 ,66 ,73 ,99 ,26 ,97 ,17 ,78 ,78 ,96 ,83 ,14 ,88 ,34 ,89 ,63 ,72 }, { 21 ,36 ,23 ,9 ,75 ,0 ,76 ,44 ,20 ,45 ,35 ,14 ,0 ,61 ,33 ,97 ,34 ,31 ,33 ,95 }, { 78 ,17 ,53 ,28 ,22 ,75 ,31 ,67 ,15 ,94 ,03 ,80 ,4 ,62 ,16 ,14 ,9 ,53 ,56 ,92 }, { 16 ,39 ,5 ,42 ,96 ,35 ,31 ,47 ,55 ,58 ,88 ,24 ,0 ,17 ,54 ,24 ,36 ,29 ,85 ,57 }, { 86 ,56 ,0 ,48 ,35 ,71 ,89 ,7 ,5 ,44 ,44 ,37 ,44 ,60 ,21 ,58 ,51 ,54 ,17 ,58 }, { 19 ,80 ,81 ,68 ,5 ,94 ,47 ,69 ,28 ,73 ,92 ,13 ,86 ,52 ,17 ,77 ,4 ,89 ,55 ,40 }, { 4 ,52 ,8 ,83 ,97 ,35 ,99 ,16 ,7 ,97 ,57 ,32 ,16 ,26 ,26 ,79 ,33 ,27 ,98 ,66 }, { 88 ,36 ,68 ,87 ,57 ,62 ,20 ,72 ,03 ,46 ,33 ,67 ,46 ,55 ,12 ,32 ,63 ,93 ,53 ,69 }, { 4 ,42 ,16 ,73 ,38 ,25 ,39 ,11 ,24 ,94 ,72 ,18 ,8 ,46 ,29 ,32 ,40 ,62 ,76 ,36 }, { 20 ,69 ,36 ,41 ,72 ,30 ,23 ,88 ,34 ,62 ,99 ,69 ,82 ,67 ,59 ,85 ,74 ,4 ,36 ,16 }, { 20 ,73 ,35 ,29 ,78 ,31 ,90 ,1 ,74 ,31 ,49 ,71 ,48 ,86 ,81 ,16 ,23 ,57 ,5 ,54 }, { 1 ,70 ,54 ,71 ,83 ,51 ,54 ,69 ,16 ,92 ,33 ,48 ,61 ,43 ,52 ,1 ,89 ,19 ,67 ,48 } }; printf("%lf\n", Function(arr)); return 0; } | cs |
제시된 수를 배열에 저장하는 것은
strtok를 사용하면 쉽게 될 것 같지만
사용법을 확실하게 숙지하지 못하였기 때문에
일일히 쉼표 붙이고 괄호 붙이고 해서 나눴다.
그 외 코드는 어렵지 않다.
4번째 for문 알고리즘에서 잘 안됐는데
알고보니 3번째 for문과 같은 결과를 내는 코드였다...
이런 실수는 하지 않도록 할 것.
사실 double도 int로 쓰면 메모리 관리 차원에서 더 나을 것.
'Algorithm > Project Euler' 카테고리의 다른 글
프로젝트 오일러 2번 (0) | 2017.05.19 |
---|---|
프로젝트 오일러 20번 (0) | 2017.05.19 |
프로젝트 오일러 16번 (0) | 2017.05.18 |
프로젝트 오일러 14번 (0) | 2017.05.17 |
프로젝트 오일러 3번 (0) | 2017.05.17 |
댓글