본문 바로가기

알고리즘/Python

[Python | SWEA] 2805. 농작물 수확하기

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV7GLXqKAWYDFAXB&categoryId=AV7GLXqKAWYDFAXB&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

N X N크기의 농장이 있다.

이 농장에는 이상한 규칙이 있다.

규칙은 다음과 같다.


   ① 농장은 크기는 항상 홀수이다. (1 X 1, 3 X 3 … 49 X 49)

   ② 수확은 항상 농장의 크기에 딱 맞는 정사각형 마름모 형태로만 가능하다.



                                         
1 X 1크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 3이다.

3 X 3크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 16 (3 + 2 + 5 + 4 + 2)이다.

5 X 5크기의 농장에서 자라는 농작물의 수확하여 얻을 수 있는 수익은 25 (3 + 2 + 1 + 1 + 2 + 5 + 1 + 1 + 3 + 3 + 2 + 1)이다.

농장의 크기 N와 농작물의 가치가 주어질 때, 규칙에 따라 얻을 수 있는 수익은 얼마인지 구하여라.

 

제출 답안

T = int(input())
for test_case in range(1, T+1):
    n = int(input())
    arr = [list(map(int, list(input().strip()))) for i in range(n)]
    mid = n//2
    result = 0
    for i in range(n):
        if i <= mid:
            result+=sum(arr[i][mid-i:mid+i+1])
        else:
            result += sum(arr[i][i-mid:mid-i])

    print(f"#{test_case} {result}")

 

개선 답안

start, end 변수로 가리키기

T = int(input())
for tc in range(1, T+1):
    N = int(input())
    arr = [list(map(int, input())) for _ in range(N)]
 
    s = e = M
    for i in range(N):
        for j in range(s, e+1):
            ans += arr[i][j]
    
        if i<M:
            s -= 1
            e += 1
        else:
            s += 1
            e -= 1
 
    print(f'#{tc} {ans}')
T = int(input())
for tc in range(1, T+1):
    N = int(input())
    arr = [list(map(int, input())) for _ in range(N)]
 
    M = N//2
    ans = 0
    for i in range(N):
        if i<=M:
            for j in range(M-i, M+i+1):
                ans += arr[i][j]
        else:
            for j in range(i-M, N-(i-M)):
                ans += arr[i][j]
 
    print(f'#{tc} {ans}')

 

참고 자료

https://velog.io/@highero-k/SWEA-2805-%EB%86%8D%EC%9E%91%EB%AC%BC-%EC%88%98%ED%99%95%ED%95%98%EA%B8%B0-Python-D3

 

[SWEA] 2805 - 농작물 수확하기 / Python / D3

D3

velog.io

https://www.youtube.com/watch?v=63h1cUX4eKY