본문 바로가기

백준 파이썬 코딩

백준 20115 에너지 드링크 파이썬

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

 

20115번: 에너지 드링크

페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한

www.acmicpc.net

처음에는 b = a(제일 작은값/2) + b(제일 큰값) 해주면 된다고 생각해 whlie 문을 사용해 매번 sort를 하고 배열[0]과 배열[-1]을 계속더해줘 배열의 길이가 1일때 whlie문이 종료되게 해줬다.

n=int(input())#O(NlogN)
s = list(map(int,input().split()))
while len(s)!=1:
    s.sort()
    a = s.pop()
    s[0] = a+s[0]/2
print(s[0])

하지만 sort를 매번 해줘서인지 시간초과가 났고 정렬을 한번만 사용해 아래와 같이 코드를 작성했다.

 

"먼저 입력받은 배열을 정렬해준 뒤 제일 큰 값에 계속 더해주는 방법으로 코드를 만들어봤다."

n=int(input())#O(N)
s = list(map(int,input().split()))
s.sort()
for i in range(n-1):
    s[-1] = s[-1]+s[i]/2
print(s[-1])