[백준] 21758 꿀 따기

cheeeese·2022년 7월 8일
0

코딩테스트 연습

목록 보기
114/151
post-thumbnail

문제

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

내 코드

n=int(input())

mlist=list(map(int, input().split()))
s=sum(mlist)
mx=0
b=mlist[0]
for i in range(1,n-1):
    b+=mlist[i]
    mx=max(mx, 2*s-mlist[0]-mlist[i]-b)

b=mlist[-1]
for i in range(n-2, 0,-1):
    b+=mlist[i]
    mx=max(mx, 2*s-mlist[-1]-mlist[i]-b)

for i in range(1, n-1):

    mx=max(mx, s-mlist[0]-mlist[-1]+mlist[i])

print(mx)

풀이

  • 나올 수 있는 경우의 수는 벌벌꿀 꿀벌벌 벌꿀벌

벌벌꿀

  • 가장 큰 합이 나오는 상황은 벌1은 0번자리, 벌통은 마지막자리에 있을때
  • 합: (총합-벌1자리의수-벌2자리의수)+(총합-벌1자리의수부터 벌2자리까지의 수의 합)

꿀벌벌

  • 위 상황의 반대

벌꿀벌

  • 가장 큰 합이 나오는 상황은 벌1은 0번 벌2는 마지막자리에 있는 경우
  • 합:(총합-벌1자리-벌2자리)+벌통자리

0개의 댓글