Algorithm for Coding Test/Swea

SWEA 2105 [모의 SW 역량테스트] 디저트 카페

728x90
반응형

이 코드는 Python으로 작성했습니다.

def check_desserts(dr, dc, left, right):
    global max_result
    cafe = [0] * 101
    cnt = 0
    lr = dr + left
    lc = dc - left
    rr = dr + right
    rc = dc + right
    br = dr + left + right
    bc = dc + right - left

    for dis in range(1, left + 1):
        if cafe[A[dr + dis][dc - dis]]:
            return
        cafe[A[dr + dis][dc - dis]] = 1
        if cafe[A[br - dis][bc + dis]]:
            return
        cafe[A[br - dis][bc + dis]] = 1
        cnt += 2

    for dis in range(1, right+1):
        if cafe[A[lr+dis][lc+dis]]:
            return
        cafe[A[lr+dis][lc+dis]] = 1
        if cafe[A[rr-dis][rc-dis]]:
            return
        cafe[A[rr-dis][rc-dis]] = 1
        cnt += 2
        
    max_result = max(max_result, cnt)


def make_distance(dr, dc):
    for left in range(1, dc+1):
        for right in range(1, N-dc):
            if dr + left + right > N - 1:
                continue
            check_desserts(dr, dc, left, right)


T = int(input())
for tc in range(1, T + 1):
    N = int(input())
    A = [list(map(int, input().split())) for _ in range(N)]
    max_result = -1
    for row in range(N-2):
        for col in range(1, N-1):
            make_distance(row, col)

    print("#{} {}".format(tc, max_result))

 

문제 출처 : SW Expert Academy

 

SW Expert Academy

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

swexpertacademy.com

 

728x90
반응형