문제
N개의 동전을 A, B, C 세명에게 나누어 주려고 합니다.
세 명에게 동전을 적절히 나누어 주어, 세 명이 받은 각각의 총액을 계산해, 총액이 가장 큰 사람과 가장 작은 사람의 차가 최소가 되도록 하기
조건
단 세 사람의 총액은 서로 달라야 합니다.
제한사항
첫째 줄에는 동전의 개수 N(3<=N<=12)이 주어집니다.
그 다음 N줄에 걸쳐 각 동전의 금액이 주어집니다.
총액이 가장 큰 사람과 가장 작은 사람의 최소차를 출력하세요.
문제풀이
def go(L):
global res
if L==N:
diff=max(money)-min(money)
if diff<res:
tmp=set()
for x in money:
tmp.add(x)
if len(tmp)==3:
res=diff
else:
for i in range(3):
money[i]+=coin[L]
go(L+1)
money[i]-=coin[L]
N=int(input())
coin=[]
money=[0]*3
res=2147000000
for _ in range(N):
coin.append(int(input()))
go(0)
print(res)'파이썬 알고리즘 풀이' 카테고리의 다른 글
| 64)송아지 찾기(BFS: 상태트리탐색) (0) | 2021.11.09 |
|---|---|
| 63)알파코드(DFS) (0) | 2021.11.08 |
| 61)동전 바꿔주기(DFS) (0) | 2021.11.08 |
| 60)양팔저울(DFS) (0) | 2021.11.08 |
| 59)휴가(삼성 SW역량평가 기출문제: DFS활용) (0) | 2021.11.08 |