삽입 정렬 예제 - 1

문제 분석

  • 모든 사람이 가장 빠른 시간에 인출하는 방법을 그리디 방식으로 해결해 본다.

  • 시간이 가장 적게 걸리는 사람이 먼저 인출할 수 있도록 순서를 정하는 것이 곧 그리디 방식이다.

  • 이를 위해서는 인출 시간을 기준으로 값을 정렬해야 하는데 N의 최댓값이 1,000이고 시간 제한이 1초이므로 시간 복잡도가 O(n^2) 이하인 정렬 알고리즘 중 아무거나 사용해도 된다.

손으로 풀어보기

  1. 삽입 정렬을 이용해 인출 시간을 기준으로 데이터를 오름차순 정렬한다.

img_1.png
  1. 정렬된 데이터를 바탕으로 모든 사람이 돈을 인출하는 데 필요한 최솟값을 구한다. 인출에 필요한 시간은 앞 사람들의 인출 시간 합 + 자신의 인출 시간이므로 합 배열로 풀 수 있다.

img_2.png

슈도코드

코드 구현 - 파이썬

코드 구현 - 자바

Last updated