이번에 골라본 문제는 실버4 수준의 1980번 문제 이름이 '햄버거 사랑'이라 끌렸다.
ㅋㅋㅋㅋㅋㅋㅋ 누가 햄버거 쟁이...(알바 그만둔지 1년이 넘음 그냥 햄버거 좋아하는 사람임)아니랄까봐
이 문제에서 중요한 점은
바로 이 부분이다. 최대한 햄버거를 많이, 그러나 콜라는 조금 먹어야 한다.
내가 맨 처음 낸 코드는 아래와 같다.
이 코드는 당연히 틀렸다. 왜냐하면 이 코드의 문제점은 '최대한 햄버거를 많이'에만 포커스가 맞추어져 있다는 점이다. 예를 들어 질문 검색에 있던 반례를 들어 보면
n=1111, m=1717, t=9998일 때
정답은 a=6, b=1, sum=7, coke= 302이다.
하지만 내 코드로 풀이할 경우
a=8, b=0, sum=8, coke = 1110이다. 콜라를 먹는 시간이 더 적은 단계가 있음에도 햄버거를 최대로 먹는 위치에서 코드를 멈춰버리기 때문이다. 이를 해결하려면 어떻게 하는 게 좋을까
위와 같이 코드를 변경해보았다. 기존 코드는 coke을 0으로 초기화해주었지만 이제는 t로 즉 '모든 시간을 콜라를 마시는데 쓴다'를 가장 초기의 상태로 두고 elif문에 추가 조건을 붙여넣었다. (t-temp) < coke 즉 새로 계산된 경우의 콜라 마시는 시간이 이전에 콜라 마시는 시간보다 적게 들 경우 sum과 coke 값을 바꿔주는 것이다. 하지만 이 경우 모든 경우의 수를 전부 해보고 가장 크고 작은 값이 나오는 경우를 출력하는 것이기에 <시간 초과>가 나올 듯 하다. 그래도 한 번 제출해보도록 하겠다.
웬열 시간초과는 커녕 94프로에서 틀렸습니다 뜸. 또 어떤 반례가 있는 것인데요. 이 문제는 사람들이 많이 푼 문제가 아니기 때문에 구글링할 소스도 적다ㅜㅜ
코드를 대거 고쳐버렸다. 처음 문제에서 주어진 조건을 최대한 활용해서 말이다.
1.콜라를 마시는 시간을 최소
2.콜라 마시는 시간이 같을 경우 햄버거를 최대한 많이
위 두 조건에 맞게 if문을 수정하고 콜라를 마시는 시간은 0보다 크거나 같아야 한다는 조건까지 붙여주니까 모든 데이터에 대해 해당되었다.
1시간 동안 7트라는 부끄러운 기록이지만 내는 괜찮다... 암요 암요
근데 언제쯤 브론즈 탈출할까 에잉쯧