야근지수 (미제)

야근지수 (미제)

야근 지수

회사원인 수민이는 많은 일이 쌓여 있습니다. 수민이는 야근을 최소화하기 위해 남은 일의 작업량을 숫자로 메기고, 일에 대한 야근 지수를 줄이기로 결정했습니다. 야근 지수는 남은 일의 작업량을 제곱하여 더한 값을 의미합니다. 수민이는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다. 수민이의 퇴근까지 남은 N 시간과 각 일에 대한 작업량이 있을 때, noOvertime 함수를 제작하여 수민이의 야근 지수를 최소화 한 결과를 출력해 주세요. 예를 들어, N=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 야근 지수를 최소화하기 위해 일을 한 결과는 [2, 2, 2]가 되고 야근 지수는 22 + 22 + 22 = 12가 되어 12를 반환해 줍니다.


  • 처음 생각한 로직
  1. 해당 배열의 전체 합 - N값
  2. 1번의 값을 배열의 길이로 나눈다.
  3. 나머지가 0인 경우와, 0이 아닌 경우가 생긴다.
    • 나머지가 0인 경우, 해당 몫의 제곱근에 length값을 곱한다. (끝)
    • 나머지가 0이 아닌경우,
      • 몫이 소수점이 나온는데, 이는 내림하여 소수점 자리수들을 버리고 (floor)
      • 해당 값과 배열의 인자를 비교하여, 해당 값보다 작은 인자의 경우 바로 제곱근화 하고, 나머지 값은 해당 몫으로 제곱하여 더한다. (이 부분이 잘못되었음)
  4. 3번의 첫번째 나머지가 0인 경우는 테스트가 통과하는데 2번째 경우는 로직이 잘못됨

통과하고 싶다