자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[탐색][시뮬레이션] - 사과나무(2차원 List)

얄루몬 2022. 7. 6. 18:41

문제

  • N(홀수) X N의 사과나무 대지가 주어질 때 빨간 부분만 수확한다고 한다면 총 몇개의 사과를 수확할 수 있는지 출력해라

문제 풀이

import sys
sys.stdin = open("input.txt", "r")

n = int(input())
apple = [list(map(int,input().split())) for _ in range(n)]
s = e = n//2
result = 0
for i in range(n):
    #start부분에서 end부분까지만 돌게 j 범위를 설정한다.
    for j in range(s,e+1):
        result += apple[i][j]
    if i < n//2:
        s -= 1
        e += 1
    else:
        s += 1
        e -= 1
print(result)
  • 1 ~ n//2 지점까지는 역 삼각형 모양으로 구역이 증가됨에 따라 해당 부분은 s -= 1, e+=1로 사과 수확 범위를 넓혀주고n//2를 넘어가는 지점부터는 점점 구역이 줄어들기 때문에 s += 1 e-= 1을 해서 범위를 줄여 사과를 수확할 수 있게 한다.
  • s, e+1 까지의 범위로 j를 제한해주고 if문으로 s와 e범위를 관리해준다.