백준 알고리즘 1246 파이썬 python

은영·2022년 12월 5일
0

오늘은 오랜만에 난이도를 다시 높여 실버4 수준의 문제를 풀어볼까 한다. 그러나 한 문제를 오랫동안 잡고 있을 자신이 없어서 정답 비율이 높은 문제로 골라 왔다.

오늘 풀 문제는 1246번째 문제

와 나는 근데 알고리즘을 풀 게 아니라 국어 공부를 해야 하는 걸까 문제가 가리키는 말이 뭔지 이해하는데 한참 걸릴 거 같다.

'최대 수익을 낼 수 있는 달걀의 가장 낮은 가격'을 구해야 한다. 그럼 해야 할 일을 순서대로 정리해보자.

  1. 달걀을 최대한 많은 손님들이 살 수 있는 가격 책정
  2. 최대 수익을 내야 하므로 비싸게 사는 손님이 2개를 구입할 수 있게 계산
  3. 계산한 수입 총합

그런데 내가 이해한대로 계산하면 예제가 이해가 안 간다

예제는 다음과 같다. 내가 이해한대로 수익이 계산된다면 7로 가격을 책정했을 때, 수익은 7+8+8+10+10 = 43이어야 한다. 잘못 이해한 것이다. 7로 책정을 하였어도 손님들이 처음 제시한 가격으로 구매할 거라고 착각한 나의 잘못이었다. 그리고 '2개 이상의 달걀을 팔지 않는다'라는 문장은 말 그대로 손님 하나당 달걀을 1개씩만 판다는 뜻이었다. 즉 다시 이해하면

  1. 달걀을 최대한 많은 손님들이 살 수 있는 가격 책정
  2. 그 사람들이 하나씩 사갈 때의 수익

이렇게 간단한 문제를 어렵게 생각하고 있던 것이다.
그럼 문제를 다시 이해했으니 코드를 작성하여보자


그렇게 작성한 코드는 위와 같다. 근데 대차게 바로 틀려버렸는데 왜지... 왜냐하면 계란 개수가 손님 수보다 적을 때를 생각하지 못 한 것이다. 위 코드와 같이 작성할 경우

계란이 2개 손님이 5명 있고 각각 1,2,3,4,5원에 계란을 살 수 있다고 하면
3원에 계란을 팔게 되고 수익은 9원을 봤다는 결과 값을 출력하게 된다. 하지만 이는 3원으로 계란을 3개 판 수익인 거다. 그렇기에 계란 개수만큼 팔게끔 코드를 수정해주면 된다.


위와 같이 코드를 수정하면 문제 해결 완료~~

0개의 댓글

관련 채용 정보