본문 바로가기
알고리즘 (Python)

사과나무 (다이아몬드)

by ppirae 2022. 3. 23.

인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다.

https://inf.run/Uiep

 

파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의

파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...

www.inflearn.com

내가 이런 배열문제, 별찍기 문제에 약한것 같다.

 

고민 하고 방법이 잘 떠오르지 않아 강의를 봤다.

#강의 풀이
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
res = 0
s = e = n//2
for i in range(n):
    for j in range(s, e+1):
        res += a[i][j]
    if i < n//2:
        s -= 1
        e += 1
    else:
        s += 1
        e -= 1

print(res)

처음에 가운데 한칸을 먹고

start와 end 변수를 이용해 한칸씩 늘려나가다가
i 값이 중간을 넘으면
다시 줄여나가는 방법으로 합계값을 구하면 된다.

댓글