Algorithm/백준_생각정리
백준_5545_최고의 피자(python)
코친남
2023. 4. 19. 14:08
※ 접근법
n의 숫자가 크지 않았기 때문에 구현으로 풀어야겠다고 생각했다.
※ 풀이
1. 처음 도우만 선택했을 때 1원당 칼로리를 계산해놓는다.
2. 입력받은 칼로리를 리스트에 저장해놓고 내림차순으로 정렬한다.
3. 리스트에서 칼로리를 하나씩 보면서 1원당 칼로리를 계산하고 이전에 구했던 것보다 작아진다면 반복문을 탈출한다.
( 토핑의 가격은 하나로 고정돼있기 때문에 칼로리를 내림차순으로 정렬해놓으면 뒤로 갈수록 1원당 가격이 내려갈 수 밖에 없다.)
n = int(input())
a,b = map(int,input().split())
dow = int(input())
data = []
for i in range(n):
data.append(int(input()))
data.sort(reverse=True)
money = a
kalori = dow
won = dow / a
for i in data:
money += b
kalori += i
now = kalori / money
if won < now:
won = now
else:
break
print(int(won))
※ 회고
처음에는 '/' 기호가 아닌 '//'로 계산했었다. 결국 몫만 필요하다고 생각했기 때문에 내린 결론이었다. 근데 하나 생각하지 못한 반례가 있었다. 근데 이 반례가 무엇인지 모르겠어서 질문 게시판에 자세하게 작성하다가 반례를 떠올리게 됐다. 차후에도 모르는 것이 있다면 무엇을 모르는지 자세하게 작성해보자. 해결하게 될 수 있을지도 모른다.