백준-12100

Seogyu Gim·2020년 11월 26일
0

코딩테스트

목록 보기
7/47
import copy


def move(d):
  global N

  if d == "right":
    for row in range(N):
      idx = N-1
      for col in range(N-2, -1, -1):
        if mat[row][col]:
          tmp = mat[row][col]
          mat[row][col] = 0
          if mat[row][idx] == 0:
            mat[row][idx] = tmp
          elif mat[row][idx] == tmp:
            mat[row][idx] *= 2
            idx -= 1
          else:
            idx -= 1
            mat[row][idx] = tmp

  elif d == "left":
    for row in range(N):
      idx = 0
      for col in range(1, N):
        if mat[row][col]:
          tmp = mat[row][col]
          mat[row][col] = 0
          if mat[row][idx] == 0:
            mat[row][idx] = tmp
          elif mat[row][idx] == tmp:
            mat[row][idx] *= 2
            idx += 1
          else:
            idx += 1
            mat[row][idx] = tmp

  elif d == "up":
    for col in range(N):
      idx = 0
      for row in range(1, N):
        if mat[row][col]:
          tmp = mat[row][col]
          mat[row][col] = 0
          if mat[idx][col] == 0:
            mat[idx][col] = tmp
          elif mat[idx][col] == tmp:
            mat[idx][col] *= 2
            idx += 1
          else:
            idx += 1
            mat[idx][col] = tmp

  else:
    for col in range(N):
      idx = N-1
      for row in range(N-2, -1, -1):
        if mat[row][col]:
          tmp = mat[row][col]
          mat[row][col] = 0
          if mat[idx][col] == 0:
            mat[idx][col] = tmp
          elif mat[idx][col] == tmp:
            mat[idx][col] *= 2
            idx -= 1
          else:
            idx -= 1
            mat[idx][col] = tmp
  

def dfs(level):
  global answ, mat, direction

  if level == 5:
    for m in mat:
      answ.append(max(m))
  else:
    tmp_mat = copy.deepcopy(mat)
    for d in direction:
      move(d)
      dfs(level+1)
      mat = copy.deepcopy(tmp_mat)
  

N = int(input())
mat = [[0]*N for _ in range(N)]
mat = [list(map(int, input().split())) for _ in range(N)]
direction = ["right", "left", 'up', 'down']

answ = []
dfs(0)
print(max(set(answ)))
profile
의미 있는 일을 하고싶은 개발자

0개의 댓글