1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
using System;
class Solution
{
public long solution(int n, int[] times)
{
// 심사관이 심사하는 시간을 오름차순으로 정렬
Array.Sort(times);
// 최대 심사 시간 = 가장 심사시간이 느린 심사관의 시간 X 사람 수
long maxTime = (long)n * times[times.Length - 1];
// 최소 심사 시간 초기화
long minTime = 1;
// 최종 반환할 최소 시간 초기화
long answer = maxTime;
// 이진 탐색 시작
// 최소 시간이 최대시간과 같아질 때까지..
while (minTime <= maxTime)
{
// 시간의 중간값 계산
long midTime = (minTime + maxTime) / 2;
// 처리된 사람 수
long totalPeople = 0;
foreach (int time in times)
{
//현재 시간이 지날 때까지 심사관 한명당 처리한 사람의 수
long people = midTime / time;
totalPeople += people;
}
// 처리된 사람수가 목표보다 적다면 덜 처리한것..
if (totalPeople < n)
{
// 중간값을 재설정한다.. + 1분
minTime = midTime + 1;
}
else
{
// 있는 사람들을 다 처리했다!
// 사람들을 다 처리할 수 있는 시간중 최소값을 구해야 한다.
// 현재 중간값이 더 작은 경우 answer 값을 갱신
answer = Math.Min(answer, midTime);
// 범위를 줄여서 중간값을 다시 체크
maxTime = midTime - 1;
}
}
// 최소 시간 반환
return answer;
}
}
|
cs |
'프로그래머스 - 내 풀이 > 프로그래머스 Lv3' 카테고리의 다른 글
[C#]프로그래머스/네트워크/그래프,DFS (2) | 2023.04.28 |
---|---|
[C#]프로그래머스/이중우선순위큐 (0) | 2023.04.28 |
[C#]프로그래머스/가장 먼 노드/BFS,그래프 (0) | 2023.04.27 |
[C#]프로그래머스/단어변환/DFS (0) | 2023.04.24 |
[C#]프로그래머스/디스크 컨트롤러/우선순위큐 (0) | 2023.04.23 |