원하는 것은 뭐든지
99클럽 코테 스터디 8일차 TIL , 기능개발 본문
반응형
문제
현재 개발되어야 하는 기능의 공정률과 개발속도가 입력으로 들어온다.
각자 다른 개발자가 기능을 개발하기 때문에 동시에 개발되지만, 이전 기능이 개발되지 않으면 에러가 발생하기에 배포할 수 없다. 뒤의 기능이 개발이 완료되더라도 이전의 기능이 개발완료되지 않았으면 이전 기능이 개발완료 되는 시점에 함께 배포된다.
풀이
제출 1 - 오답
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int processing = (100-progresses[0])/speeds[0];
if((100-progresses[0])%speeds[0] != 0) processing += 1;
int cnt = 1;
List<Integer> list = new ArrayList<>();
for(int i=1;i<speeds.length;i++){
int progress = progresses[i];
int speed = speeds[i];
int processTime = (100-progress)/speed;
if((100-progress)%speed != 0) processTime += 1;
if(processing < processTime){
processing = processTime;
list.add(cnt);
cnt = 1;
}else if(processing == processTime){
list.add(cnt+1);
cnt = 0;
}else{
cnt ++;
}
}
if(cnt != 0) list.add(cnt); //마지막 값
// int[] answer = list.toArray(new int[0]);
int[] answer = new int[list.size()];
for(int i = 0;i<list.size();i++){
answer[i] = list.get(i);
}
return answer;
}
}
큐를 사용해야 하나 했지만 그럴 필요 없이 일단 완료되는데 필요한 일 수를 구한 후에 앞에서 부터 뒤로 가면서 이전의 기능보다 늦게 끝나는 경우에 list에 담으면 된다고 생각했다. 그리고 같은 일수가 소모되는 기능을 만나면 해당 기능까지 추가하고 배포 기능을 0으로 초기화하도록 했다.
제출 2 - 정답
import java.util.*;
class Solution {
//일 수 계산
int calculateDays(int progress, int speed){
int days = (100-progress)/speed;
if((100-progress)%speed != 0) days+=1;
return days;
}
public int[] solution(int[] progresses, int[] speeds) {
int processing = calculateDays(progresses[0], speeds[0]);
int cnt = 1; //배포 기능 개수
List<Integer> list = new ArrayList<>();
for(int i=1;i<speeds.length;i++){
int progress = progresses[i];
int speed = speeds[i];
int processTime = calculateDays(progress, speed);
if(processing < processTime){ //이전에 최고 값보다 크면 true
processing = processTime;
list.add(cnt);
cnt = 1;
}else{
cnt ++;
}
}
list.add(cnt); //마지막 값
int[] answer = new int[list.size()];
for(int i = 0;i<list.size();i++){
answer[i] = list.get(i);
}
return answer;
}
}
소모되는 일 수가 같은 경우를 고려 할 필요가 없었다.
이렇게 되면 마지막 값을 더해 줄 경우도 조건절을 사용하지 않고 더해주면 된다.
TIL
- 계속해서 문제를 해결하긴 하는데 시간이 많이 소요된다. 풀이시간을 줄이는데 힘을 써야 한다.
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL , 이중우선순위큐 (0) | 2024.07.31 |
---|---|
99클럽 코테 스터디 9일차 TIL , 더 맵게 (0) | 2024.07.31 |
99클럽 코테 스터디 7일차 TIL , 하노이의 탑 (0) | 2024.07.28 |
99클럽 코테 스터디 6일차 TIL , 의상 (0) | 2024.07.27 |
99클럽 코테 스터디 5일차 TIL , 전화번호 목록 (0) | 2024.07.26 |
Comments