일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- Heat Equation
- Compressible Flow
- 유체역학
- Fluid Dynamics
- Turbulent
- 통계학
- Finite Difference Method
- projecteuler
- regression
- Boundary Layers
- 파이썬
- 예제
- 프로젝트오일러
- programmers
- 프로그래머스
- Laminar
- 우선순위큐
- python3
- 힙
- Blasius
- heap
- Navier-Stokes
- Fluids
- FTCS
- Crank-Nicolson
- 회귀
- Statistics
- 디스크 컨트롤러
- 이중우선순위큐
- Today
- Total
Sudal's Garage
Project Euler 11 본문
Question:
In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 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 03 45 02 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 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 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
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
문제:
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 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 03 45 02 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 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 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
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
위의 20×20 그리드에서 빨간색으로 표시된 대각선의 네 숫자의 곱은 26 × 63 × 78 × 14 = 1788696이다.
같은 방향으로(위, 아래, 왼쪽, 오른쪽, 대각선) 인접한 네 숫자의 곱 중 가장 큰 곱의 값은?
Solution:
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 | data = list(map(int,a.split(' '))) start = 0 method = '' result = 0 for i in range(len(data)): if i < (len(data)-60): # Vertical if data[i] * data[i + 20] * data[i + 40] * data[i + 60] > result: result = data[i]*data[i + 10]*data[i + 20]*data[i + 30] start = data[i] method = 'Vertical' if i % 20 < 17: # Horizontal if data[i] * data[i + 1] * data[i + 2] * data[i + 3] > result: result = data[i] * data[i + 1] * data[i + 2] * data[i + 3] start = data[i] method = 'Horizontal' if i % 20 < 17 and i <= 336: # diagonal right if data[i] * data[i + 21] * data[i + 42] * data[i + 63] > result: result = data[i] * data[i + 21] * data[i + 42] * data[i + 63] start = data[i] method = 'Diagonal right' if i % 20 > 2 and i <= 339: if data[i] * data[i + 19] * data[i + 38] * data[i + 57] > result: result = data[i] * data[i + 19] * data[i + 38] * data[i + 57] start = data[i] method = 'Diagonal left' print([result,start,method]) | cs |
'Programming > Project Euler - python' 카테고리의 다른 글
Project Euler 13 (0) | 2019.02.28 |
---|---|
Project Euler 12 (0) | 2019.02.27 |
Project Euler 10 (0) | 2019.02.16 |
Project Euler 9 (0) | 2019.02.06 |
Project Euler 8 (0) | 2019.02.05 |