문제링크: https://www.acmicpc.net/problem/20115

 

♣ 문제정리

입력받은 에너지 드링크의 양을 바탕으로 합쳐진 에너지 드링크의 최대양을 구하는 문제

 

♣ 코드 작성 전 생각할 거리

큰 수와 작은 수로 두 수가 주어졌을 때, 최대양을 가지려면 절반의 양을 더해야하는 쪽은 큰 수가 아닌 작은 수가 된다.

더할 양은 최대로 해야하고 반으로 줄여야 하는 것은 가장 적어야 하기 때문이다!

 

결론: 가장 큰 수를 온전히 더하고, 나머지 수는 모두 절반씩 더하면 합쳐진 최대의 에너지 드링크를 출력할 수 있다.

 

♣ 코드 작성

n = int(input())

drink = list(map(int, input().split(' ')))
drink.sort(reverse=True)

sum = drink[0]
for i in range(1, n):
    sum = sum + drink[i]/2

print('%g'%sum)

 

 
 
% (formatting Operator) 앞의 포맷 템플릿에는 대입값 형식이 주어지는데 이를 변환 지시어라고 부른다.
 
-> 포맷을 가진 문자열을 만들어주는 연산자
출처: http://pythonstudy.xyz/python/article/9-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EB%B0%94%EC%9D%B4%ED%8A%B8

 

5

3 2 10 9 6

위 테스트 케이스에서 출력값이 20이 나와야 하는데 포맷팅을 안해주면 20.0이 나오기 때문에 '%g'%sum 을 사용.

 

출처: 공식문서, https://docs.python.org/ko/3/library/string.html

%g 는 유효하지 않은 후행 0은 모두 유효숫자부에서 제거되는 특성이 있다. 716.5 와 같이 유효한 후행만 남겨둘 수 있다!! 

 

 

참고: https://coding-nyan.tistory.com/75

 

 

'알고리즘 공부 > coding test' 카테고리의 다른 글

백준 17413 [단어 뒤집기 2]  (0) 2022.09.16
백준 1931 [회의실 배정]  (0) 2022.05.20
백준 11399 [ATM]  (0) 2022.05.18
백준 2217[로프]  (0) 2022.05.17
백준 2358 [평행선]  (0) 2022.02.08

+ Recent posts