티스토리 뷰

알고리즘 공부/백준

백준 12869번

_Yunhwan 2022. 10. 26. 22:56

https://www.acmicpc.net/problem/12869

 

12869번: 뮤탈리스크

1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다.

www.acmicpc.net

n = int(input())

a = list(map(int,input().split()))

scv = [0]*3

for i in range(n):
  scv[i] = a[i]


result=1e9

def dfs(x,cnt):
  global result
	# 체력순으로 정렬
  x.sort()
  if x[0]<=0 and x[1]<=0 and x[2]<=0:
    result = min(cnt,result)
    return True

  else:
    #상황에 따라서 2번째 3번째 공격해야하는 scv고려
    dfs([x[0]-1,x[1]-3,x[2]-9],cnt+1)
    dfs([x[0]-3,x[1]-1,x[2]-9],cnt+1)
  
dfs(scv,0)

print(result)

 

DFS 탐색을 통한 풀이

 

 

첫번 째 공격 대상은 가장 체력이 많은 scv,

상황에 따라서 2번째 3번째 공격 해야 하는 scv 고려해줘야 함

'알고리즘 공부 > 백준' 카테고리의 다른 글

백준 17086번  (0) 2022.10.29
백준 1062번  (0) 2022.10.27
백준 1806번  (0) 2022.10.27
백준 17070번  (0) 2022.10.26
백준 16953번  (0) 2022.10.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함