jhim000   4년 전

안녕하세요.

문제 풀다가 로직은 맞는 것 같은데, 이유를 찾지 못하여 질문 드립니다.

어떤 부분이 문제인지 알려주신다면 감사하겠습니다.

전체적인 로직은 다음과 같습니다.

  1.   N 줄에 주어지는 T, P를 큐에 저장
  2. 일을 받은 날까지 포함하여 큐에 담습니다. q.push_back({ i + 1, T, P }); 
  3. 총 N일 중에 일하는 날 수를 count 라는 변수를 만들어서 count가 1부터 N까지 증가하도록 합니다. (count = 일하는 날 수) 
  4. 해당 count에서 일어날 수 있는 모든 경우의 수에 대하여 총 페이 (ans += cur.p)를 구합니다. 예를들어 전체 3일 중에 일하는 날 수 (count)가 2이면, (0, 1, 1), (1, 0, 1), (1, 1, 0) 이런 경우의 수가 도출되는데, 각 경우마다 총 페이의 최대 값을 pay라는 vector에 저장 합니다.
  5. 마지막으로 pay (vector)를 sort 하여 맨 뒤에 있는 값을 출력하도록 프로그래밍 하였습니다.

ha_ram   4년 전

로직이 틀렸습니다. 일하는 기간에는 다른 일을 못합니다.

위의 로직대로 작동하면 퇴사하기 전에 끝나는 모든 일을 다 해서 pay를 더한것밖에 안됩니다.

문제에서 주어진 조건인 " 상담을 하는데 필요한 기간은 1일보다 클 수 있기 때문에, 모든 상담을 할 수는 없다. 예를 들어서 1일에 상담을 하게 되면, 2일, 3일에 있는 상담은 할 수 없게 된다. 2일에 있는 상담을 하게 되면, 3, 4, 5, 6일에 잡혀있는 상담은 할 수 없다.  " 를 잘 생각해 보시기 바랍니다.

jhim000   4년 전

감사합니다.

접근 방식이 완전 틀린 것 같습니다.

댓글을 작성하려면 로그인해야 합니다.