본문 바로가기
알고리즘/프로그래머스

프로그래머스 야근지수 구하기 (level.3)

by 코리늬 2018. 2. 20.

문제 : 회사원인 수민이는 많은 일이 쌓여 있습니다. 

수민이는 야근을 최소화하기 위해 남은 일의 작업량을 숫자로 메기고, 

일에 대한 야근 지수를 줄이기로 결정했습니다. 야근 지수는 남은 일의 작업량을 제곱하여 더한 값을 의미합니다. 

수민이는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다. 

수민이의 퇴근까지 남은 N 시간과 각 일에 대한 작업량이 있을 때, 

noOvertime 함수를 제작하여 수민이의 야근 지수를 최소화 한 결과를 출력해 주세요. 

예를 들어, N=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 

야근 지수를 최소화하기 위해 일을 한 결과는 [2, 2, 2]가 되고 

야근 지수는 2의2제곱 + 2의2제곱 + 2의2제곱 = 12가 되어 12를 반환해 줍니다.


우선 작업량들의 제곱의 합이 최소가 되려면 작업량에 있는 수들의 값 편차가 적어야한다.

하지만 이 방법을 알았지만 코딩으로 표현하기가 매우 어려웠다.

알고보니 최대값들을 구해서 -1씩 해주다보면 편차가 줄어드는 방법을 사용했다.

인덱스별 최대값을 구해서 -1을 하고 다시 최대값을 구해서 -1해주는 방식이었다.

수학적 방식을 컴퓨터적 관점으로 바꾸는게 아직 익숙하지 않은 것 같다.


댓글