문제링크: 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) 앞의 포맷 템플릿에는 대입값 형식이 주어지는데 이를 변환 지시어라고 부른다.
-> 포맷을 가진 문자열을 만들어주는 연산자

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

%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 |