문제 링크
20115번: 에너지 드링크
페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한
www.acmicpc.net
문제 요약
두 에너지 드링크 a, b가 있고, 양이 각각 Xa, Xb라 할 때, 다음 둘 중 하나의 선택을 할 수 있다.
- 
a의 양을 Xa + (Xb / 2)로 만들고, b를 버리기 
- 
b의 양을 Xb + (Xa / 2)로 만들고, a를 버리기 
위의 방식으로 에너지 드링크를 합쳐서 그 양을 최대로 하자.
접근
그리디 문제이고 접근법도 굉장히 쉽습니다.
그냥 가장 양이 많은 드링크에 그다음 양이 많은 드링크를 부어버리면 됩니다.
이 과정을 하나의 드링크만 남을 때까지 반복하면 되는 문제입니다.
코드
| 1 2 3 4 5 6 7 8 9 10 | import sys input = sys.stdin.readline n = int(input()) a = list(map(int,input().split())) a.sort(reverse=True) sum = a[0] for i in range(1,n):     sum += (a[i]/2) print('%g'%sum) | cs | 
참고로 그냥 print(sum)을 하게 되면 첫 예제에서 20이 아닌 20.0을 출력하면서 틀리게 됩니다.
20.0의 소수점 아래 0을 날리는 방법은 제가 사용한 것처럼 '%g'로 포맷팅 해주시면 됩니다.
이게 가능한 이유는 공식 문서에서 확인할 수 있었는데요.
docs.python.org/ko/3/library/string.html#formatspec
string — 일반적인 문자열 연산 — Python 3.9.2 문서
string — 일반적인 문자열 연산 소스 코드: Lib/string.py 문자열 상수 이 모듈에 정의된 상수는 다음과 같습니다: string.ascii_letters 아래에 나오는 ascii_lowercase와 ascii_uppercase 상수를 이어붙인 것입니다
docs.python.org

'g' 포맷팅에 관한 내용에서 중요한 부분을 형광펜으로 칠해봤습니다. 유효하지 않은 후행 0은 모두 유효숫자부에서 제거되는 특성이 있기에 해당 문제에서 사용할 수 있었습니다.
'알고리즘 > ps' 카테고리의 다른 글
| [python] 백준 3190 뱀 (0) | 2021.03.31 | 
|---|---|
| [파이썬] 백준 바이러스 2606번 (0) | 2021.03.17 | 
| [python] 백준 10799 쇠막대기 (0) | 2021.02.04 | 
| [python] 백준 1339 단어수학 (0) | 2021.01.10 | 
| [python] 백준 1946 신입사원 (0) | 2021.01.04 | 

