문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
n명의 직원이 있고, 각 0부터 n - 1까지 고유한 id를 갖는다.
2차원 정수 배열 logs가 주어지고, logs[i] = [idi, leaveTimei]이다.
i번째 작업은 (i - 1)번째 작업이 끝난 후에 시작하고, 0번째 작업은 0시에 시작된다.
가장 오랜 시간이 소요된 작업을 수행한 직원의 id를 반환해라. 만약 두명 이상의 직원이 동일한 최장 시간을 했다면 id가 가장 작은 id를 반환해라.
#1
Input: n = 10, logs = [[0, 3], [2, 5], [0, 9], [1, 15]]
Output: 1
Explanation:
작업 0은 0에 시작하고 3에 끝나서 3시간이 걸린다.
작업 1은 3에 시작하고 2에 끝나서 2시간이 걸린다.
작업 2는 5에 시작하고 9에 끝나서 4시간이 걸린다.
작업 3은 9에 시작하고 15에 끝나서 6시간이 걸린다.
가장 오래 걸린 작업은 작업 3이고 아이디가 1인 직원이 작업해서 1을 반환한다.
#2
Input: n = 26, logs = [[1, 1], [3, 7], [2, 12], [7, 17]]
Output: 3
Explanation:
작업 0은 0에 시작하고 1에 끝나서 1시간이 걸린다.
작업 1은 1에 시작하고 7에 끝나서 6시간이 걸린다.
작업 2는 7에 시작하고 12에 끝나서 5시간이 걸린다.
작업 3은 12에 시작하고 17에 끝나서 5시간이 걸린다.
가장 오래 걸린 작업은 작업 1이다. 작업한 직원은 직원 3이라서, 3을 반환한다.
#3
Input: n = 2, logs = [[0, 10], [1, 20]]
Output: 0
Explanation:
작업 0은 0에 시작하고 10에 끝나서 10시간 걸린다.
작업 1은 10에 시작하고 20에 끝나서 20시간 걸린다.
가장 오래 걸린 작업은 작업 0과 1이다. 작업한 직원은 직원 0과 1이라서, 가장 작은 id 0을 반환한다.
class Solution {
public int hardestWorker(int n, int[][] logs) {
int id = logs[0][0];
int max = logs[0][1];
for(int i = 1; i < logs.length; i++){
int time = logs[i][1] - logs[i - 1][1];
if(time > max){
id = logs[i][0];
max = time;
}
if(time == max){
id = Math.min(id, logs[i][0]);
}
}
return id;
}
}