문제 링크: https://www.acmicpc.net/problem/14500
백준 알고리즘 기초 2/2 500에서 5번째 - 14500번 테트로미노를 풀어보았다.
C++
Python
def dfs(r,c,idx,total):
global res
if res>=total+maxs*(3-idx): return
if idx==3:
res=max(res,total)
return
else:
for i in range(4):
nr=r+dr[i]
nc=c+dc[i]
if 0<=nr<n and 0<=nc<m and check[nr][nc]==0:
if idx==1:
check[nr][nc]=1
dfs(r,c,idx+1,total+arr[nr][nc])
check[nr][nc]=0
check[nr][nc]=1
dfs(nr,nc,idx+1,total+arr[nr][nc])
check[nr][nc]=0
n,m=map(int,input().split())
arr=[list(map(int,input().split())) for i in range(n)]
check=[[0]*m for i in range(n)]
dr=[-1,0,1,0]
dc=[0,1,0,-1]
res=0
maxs=max(map(max,arr))
for i in range(n):
for j in range(m):
check[i][j]=1
dfs(i,j,0,arr[i][j])
check[i][j]=0
print(res)
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
수 이어 쓰기 1 풀이 (0) | 2023.01.24 |
---|---|
카잉 달력 풀이 (0) | 2023.01.24 |
리모컨 풀이 (0) | 2023.01.24 |
날짜 계산 풀이 (0) | 2023.01.19 |
사탕 게임 풀이 (0) | 2023.01.19 |