반응형
https://school.programmers.co.kr/learn/courses/30/lessons/176962
Level2: 택배상자와 비슷한 문제다.
Stack을 사용하여, 보조 컨테이너를 하나더 생산해서 일을 처리하는 부분에서 그렇다.
근데, 이 과제 진행하기가 조금 더 난이도가 있다.
이것저것 할게 많아서 그런거같다.
사전준비: String -> Int 문자열 정리 메소드 , 시간순서대로 정렬
여기서부터 로직
1. 과제진행
2. 과제를 진행하는데 다음 과제할 시간이 되있는지 체크
2-1 . 2번에서 다음 과제할 시간이 되면 이때, 과제를 멈추고 1번으로 돌아감
3. 현재 과제 완료
4. 과제는 완료했는데, 다음 과제 시간까지 시간이 남네?
이 남은 시간동안 멈춘 과제 하자.
다시 1번 반복
=> 5 .모든 과제를 탐색했고, 멈춰둔 과제를 순서대로 진행하면 끝
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
import java.util.*;
class Solution {
public String[] solution(String[][] plans) {
String[] answer = new String[plans.length];
Stack<String[]> stop = new Stack<>();
Arrays.sort(plans,(a,b)->ToSec(a[1])-(ToSec(b[1])));
int size = plans.length;
int z=0;
int idx=0;
int current=0;
String type ="";
int time =0;
int period =0;
int next=0;
while(size!=idx){
type=plans[idx][0];
time = ToSec(plans[idx][1]);
period = Integer.parseInt(plans[idx][2]);
current=time+period;
//새로운 과제가 틀어 막는지 체크
if(size-1!=idx){
next = ToSec(plans[idx+1][1]);
if(current>next){
stop.push(new String[]{type,current-next+""});
current=next;
idx++;
continue;
}
}
//지금 과제 완료
answer[z++]=type;
// 남은시간동안 멈춘 과제를 할수있을까?
while(!stop.isEmpty()){
int remain = next-current;
String[] work = stop.pop();
int re_p =Integer.parseInt(work[1]);
//멈춘과제 완료
if(remain>=re_p){
answer[z++]=work[0];
current+=re_p;
}else{
//과제를 또 멈춰야할때
stop.push(new String[]{work[0],re_p-remain+""});
break;
}
}
idx++;
}
//모든 과제를 탐색했다. 이젠 남은 멈춘과제 마저하자
while(!stop.isEmpty()){
answer[z++]=stop.pop()[0];
}
return answer;
}
public int ToSec (String time){
String[] t = time.split(":");
int h =Integer.parseInt(t[0])*60;
int m =Integer.parseInt(t[1]);
return h+m;
}
}
|
cs |
반응형
'알고리즘 > 프로그래머스 Level2' 카테고리의 다른 글
[PCCP 기출문제] 석유 시추 (0) | 2024.01.23 |
---|---|
[프로그래머스,java] 두 원 사이의 정수 쌍 (1) | 2023.04.18 |
[프로그래머스,Java] Level2: 리코쳇 로봇 (0) | 2023.03.24 |
[프로그래머스,Java] Level2: 호텔 대실 (0) | 2023.02.03 |
[프로그래머스,Java] Level2: 무인도 여행 (0) | 2023.01.26 |