코린이의 소소한 공부노트

[LeetCode/Easy] 2432. The Employee That Worked on the Longest Task 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2432. The Employee That Worked on the Longest Task

무지맘 2023. 5. 3. 16:08

1. Input

1) int n

2) int[][] logs

 

2. Output

1) logs를 분석해서 가장 오랜 시간이 걸린 일에 참여한 직원의 번호를 반환

- n명의 직원에게는 0번부터 n-1번까지의 번호가 있다.

- logs[i][0] == i번째 일에 참여한 직원의 번호(id)

- logs[i][1] == i번째 일이 끝난 시간(leaveTime)

- i+1번째 일은 i번째 일이 끝나자마자 시작한다.

- 0번째 일은 0에 시작한다.

- 만약 답이 여러개라면 가장 작은 번호를 반환한다.

 

3. Constraint

1) 2 <= n <= 500

2) 1 <= logs.length <= 500

3) logs[i].length == 2

4) 0 <= id <= n - 1

5) 1 <= leaveTime <= 500

6) id_i != id_i+1

7) leaveTime은 오름차순으로 정렬되어 있다.

 

4. Example

Input: n = 10, logs = [[0,3],[2,5],[0,9],[1,15]] -> Output: 1

설명:

- 0번째 일: 3-0=3

- 1번째 일: 5-3=2

- 2번째 일: 9-5=4

- 3번째 일: 15-9=6

- 3번째 일이 가장 오래 걸렸으므로 3번째 일을 했던 직원 1을 반환한다.

 

5. Code

1) 첫 코드(2023/05/03)

class Solution {
    public int hardestWorker(int n, int[][] logs) {
        int[] task = new int[logs.length];
        task[0] = logs[0][1];
        int longtime = 0;
        for(int i=1 ; i<logs.length ; i++){
            task[i] = logs[i][1] - logs[i-1][1];
            if(task[i]>task[longtime])
                longtime = i;
        }
        longtime = task[longtime];
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0 ; i<task.length ; i++)
            if(task[i]==longtime)
                list.add(logs[i][0]);
        if(list.size()>1)
            list.sort(Comparator.naturalOrder());
        return list.get(0);
    }
}