🤬[プログラマー]残業指数
5484 ワード
この投稿は、LongroadhomeのプログラマーLV。3残業指数JSの投稿を参考に作成されました.
会社員のデミはたまに残業しますが、残業すると残業疲労度が溜まります.残業疲労度は、残業開始時の残量に1つの数値を乗じたものです.デミはN時間以内に残業疲労度を最小限に抑える.デミが1時間以内に1時間の仕事量を処理できると言った場合、退勤前の残りのN時間と各仕事の仕事量について、残業疲労度を最低値に下げる関数解を返してください.
I/O例#1
n=4の場合、残りの仕事量が[4,3]の場合、残業指数を最小化するために4時間働いた結果は[2,2,2]であった.このとき残業指数は22+22+22=22です.
I/O例#2
n=1の場合、残りの仕事量が[2,1,2]であれば、残業指数を最小化するために1時間働いた結果は[1,1,2]である.残業指数は12+12+22=6です.
演算を必要としないことの合計よりもできることが多ければ[0,0,...]0を返します
昇順ソート
n残り時間繰り返し
3-1. 最値を指定し、最値と同じ配列の最大数を検索し、完了できる日数と対応するインデックスの数をそれぞれ1つ押します.
※大数の平方は常に小数の平方より大きいので、大数を全て探して平均化する過程
3-2. タスクに0個のタスクがある場合は、繰り返しを停止します.
すべての剰余二乗を加算して出力
問題の説明
会社員のデミはたまに残業しますが、残業すると残業疲労度が溜まります.残業疲労度は、残業開始時の残量に1つの数値を乗じたものです.デミはN時間以内に残業疲労度を最小限に抑える.デミが1時間以内に1時間の仕事量を処理できると言った場合、退勤前の残りのN時間と各仕事の仕事量について、残業疲労度を最低値に下げる関数解を返してください.
せいげんじょうけん
works는 길이 1 이상, 20,000 이하인 배열입니다.
works의 원소는 50000 이하인 자연수입니다.
n은 1,000,000 이하인 자연수입니다.
I/O例
I/O例説明
I/O例#1
n=4の場合、残りの仕事量が[4,3]の場合、残業指数を最小化するために4時間働いた結果は[2,2,2]であった.このとき残業指数は22+22+22=22です.
I/O例#2
n=1の場合、残りの仕事量が[2,1,2]であれば、残業指数を最小化するために1時間働いた結果は[1,1,2]である.残業指数は12+12+22=6です.
私の答え
function solution(n, works) {
// 할 수 있는 일의 총량이 works 배열을 모두 비울 수 있는 경우
if(works.reduce((a,b) => a+b,0) <= n) return 0
// 오름차순 정렬
works.sort((a,b) => b-a)
// 아직 할 수 있는 일이 남은경우
while(n) {
// 0번째 인덱스가 해당 반복의 최댓값
const max = works[0]
for(let i = 0 ; i < works.length ; i ++) {
// 해당 인덱스도 최댓값과 같다면
if(works[i] === max) {
n--
works[i]--
}
if(!n) break
}
}
return works.reduce((a,b) => a+(b**2) ,0)
}
演算を必要としないことの合計よりもできることが多ければ[0,0,...]0を返します
昇順ソート
n残り時間繰り返し
3-1. 最値を指定し、最値と同じ配列の最大数を検索し、完了できる日数と対応するインデックスの数をそれぞれ1つ押します.
※大数の平方は常に小数の平方より大きいので、大数を全て探して平均化する過程
3-2. タスクに0個のタスクがある場合は、繰り返しを停止します.
すべての剰余二乗を加算して出力
Reference
この問題について(🤬[プログラマー]残業指数), 我々は、より多くの情報をここで見つけました https://velog.io/@kwb020312/프로그래머스-야근-지수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol