Q&A 11주차 greedy algorithm

Q&A 정답

  1. 1), 2)
  2. 2activities, finish time으로 sorting 후에 (왜? 1개의 홀에 activities를 넣어야하는데 끝나는 시간 그 다음의 시작 시간을 알아야하니까)
  3. 4activities, start time으로 sorting 후에 계산( 왜? 여러개의 홀에 activities를 넣어야하는데 시작시간 순으로 정렬하고 그 순서에 맞게 강의실을 늘려가며 넣으면 되고, 만일 시작시간이 기존의 홀에 있던 activity의 끝나는 시간보다 크거나 같으면 강의실을 늘리지 않고 넣을 수 있다.
  4. 60 (20 + 30 + 10)
  5. O(n)이므로 sorting 안된다! → value/weight = 단가의 비율을 계산하는 것 O(n) → 단가들의 median 값을 구하여 median값을 기준으로 더 큰 sub set과 더 작은 sub set을 구하고 더 큰 subset만 생각하고 더 큰 sub set의 weight를 다 더해준다. 더해준값을 M이라했을 때, 수용력(W)과 비교한다.
  1. 60 - 44 = 16
  2. weight가 증가하는 방향 + value가 감소하는 방향으로 정렬하면 value / weight 인 단가가 감소하는 방향으로 정렬이 될 것이다. → 단가가 높은 순서대로 고르면 되니까 weight가 lightest한 애들(정렬한 것을 생각해보면 무게가 가벼운 것이 가장 가치있는 것이다.)부터 고르면 된다.
    1. → frequency 순서로 정렬해놓고, 가장 작은 2개의 빈도수들끼리 계속 합침 → 합친 것을 새로 정렬하고 기존의 합쳐진 2개의 빈도수들을 지움 → 결과가 트리 모형처럼 나옴 → 왼쪽 노드를 0,. 오른쪽 노드를 1로 생각하여 암호 해독하면 됨

21, 22강 Elementary Graph Algorithms