오랜만에, 프로젝트 오일러 문제 풀이입니다.
이미 문제들은 풀려있으나, 정리하는게 귀찮아서 맨날 미루네여..
프로젝트 오일러라는 사이트는 적당한 수학? 아이디어? 생각? 들을 배울 수 있는 사이트입니다.
사이트에 대한 자세한 내용은 위 링크로 들어가셔서 한번 보시면 될 것 같습니다.
문제 내용
11번 문제는 주어지는 20 x 20 행렬에서 가로, 세로 대각선 방향으로 연속되는 네 개의 자연수의 곱 중 최댓값을 구하는 문제입니다.
풀이
따로 길게 설명할 이유가 없는 문제인 것 같습니다.
사이즈가 20 x 20 이기 때문에 그냥, 탐색을 잘 하면 되는 문제입니다.
제 코드에서는 파일 입출력으로 20x20 행렬을 입력받았지만, 그냥 input()으로 한 다음에 사이트에 있는 숫자들을 copy & paste 해도 됩니다. :)
import sys
f = open(sys.path[0] + "\\11.txt","r")
L = [list(map(int,f.readline().split())) for i in range(20)]
f.close()
ans = 0
# 수평
for i in range(20):
for j in range(17):
k = L[i][j] * L[i][j+1] * L[i][j+2] * L[i][j+3]
ans = max(ans,k)
# 수직
for j in range(20):
for i in range(17):
k = L[i][j] * L[i+1][j] * L[i+2][j] * L[i+3][j]
ans = max(ans,k)
# 대각선 1 \ 방향
for i in range(17):
for j in range(17):
k = L[i][j] * L[i+1][j+1] * L[i+2][j+2] * L[i+3][j+3]
ans = max(ans,k)
# 대각선 2 / 방향
for i in range(17):
for j in range(3,20):
k = L[i][j] * L[i+1][j-1] * L[i+2][j-2] * L[i+3][j-3]
ans = max(ans,k)
print(ans)
답은 스스로 한번 코드를 작성하고 실행해보시길 바랍니다 :)
Rmx
'Problem Solving > Project Euler' 카테고리의 다른 글
[프로젝트 오일러] Problem 10 Solution (0) | 2020.03.03 |
---|---|
[프로젝트 오일러] Problem 9 Solution (0) | 2020.03.03 |
[프로젝트 오일러] Problem 8 Solution (0) | 2020.02.29 |
[프로젝트 오일러] Problem 7 Solution (0) | 2020.02.29 |
[프로젝트 오일러] Problem 6 Solution (0) | 2020.02.29 |