본문 바로가기
> 알고리즘 문제 풀이/BOJ

**14620-꽃길 (python, 파이썬)

by bky373 2020. 10. 17.

- 포인트: 
  - 전수조사(백만, 천만 정도의 시간 복잡도라면) + 방향벡터
  -
2차원 배열의 좌표를 1차원으로 표현할 수 있음 -> 1차원 순서값 =  x * N + y
    - x = 1차원 순서값 // N
    - y = 1차원 순서값 % N

N = int(input())
C = [list(map(int, input().split())) for _ in range(N)]

dx, dy = [0, 0, 1, 0, -1], [0, 1, 0, -1, 0]

ans = 10000

def ck(flower_list):
    cost = 0
    flower_occupied = []
    for order in flower_list:
        x = order // N
        y = order % N
        if x == 0 or x == N-1 or y == 0 or y == N-1:
            return 10000
        for w in range(5):
            flower_occupied.append((x+dx[w], y+dy[w]))
            cost += C[x+dx[w]][y+dy[w]]
    if len(set(flower_occupied)) != 15:
        return 10000
    return cost

for i in range(N*N):
    for j in range(i+1, N*N):
        for k in range(j+1, N*N):
            ans = min(ans, ck([i, j, k]))

print(ans)

댓글