한국어/Hackerrank - 한국어 버전과 문제가 다를 수 있습니다. 채점은 Hackerrank를 추천합니다.
격자의 크기 = 20x20, 0 <= 격자 속 수의 값 <= 100
data = [list(map(int, input().split())) for _ in range(20)]
ans = 0
for i in range(20):
for j in range(20):
if j < 17:
ans = max(data[i][j]*data[i][j+1]*data[i][j+2]*data[i][j+3], ans)
if i < 17:
ans = max(data[i][j]*data[i+1][j+1]*data[i+2][j+2]*data[i+3][j+3], ans)
if i < 17:
ans = max(data[i][j]*data[i+1][j] * data[i+2][j]*data[i+3][j], ans)
if j > 2:
ans = max(data[i][j]*data[i+1][j-1]*data[i+2][j-2]*data[i+3][j-3], ans)
print(ans)
간단히 풀 수 있는 문제로 어떤 위치에서 위, 아래, 왼쪽, 오른쪽, 대각선으로 연속된 4개의 수의 곱 중 최댓값을 찾는 문제이다.
중요한 점은 위를 확인하면 아래를, 오른쪽을 확인하면 왼쪽을, 오른쪽 아래 대각선을 확인하면 왼쪽 위를, 왼쪽 아래 대각선을 확인하면 오른쪽 위 대각선을 확인할 필요가 없다는 것이다.
위의 코드는 순서대로 오른쪽, 오른쪽 아래, 위, 왼쪽 아래를 확인한다. (코드가 어렵지 않기 때문에 자세하게 설명하지는 않겠다.)
'알고리즘 공부 > 프로젝트 오일러(Project Euler)' 카테고리의 다른 글
{프로젝트 오일러/Project Euler} 10. 소수들의 합 (0) | 2021.01.06 |
---|---|
{프로젝트 오일러/Project Euler} 9. 특별한 피타고라스 수 (0) | 2021.01.05 |
{프로젝트 오일러/Project Euler} 8. 이어진 수의 곱의 최댓값 (0) | 2021.01.04 |
{프로젝트 오일러/Project Euler} 7. 10001번째 소수 (0) | 2021.01.03 |
{프로젝트 오일러/Project Euler} 6. 제곱의 합과 합의 제곱의 차 (0) | 2021.01.03 |