728x90
728x90
문제링크
https://programmers.co.kr/learn/courses/30/lessons/42586
문제풀이
👨🏻💻 핵심 스킬 👨🏻💻
구현
기능을 구현을 하고 기능이 구현이 완료되면 업데이트를 수행한다. 이 때, 기능은 순서가 있으며 앞의 기능이 구현이 되지 않았다면 뒤에 기능이 구현이 되어도 배포가될 수 없다. 입력으로 기능의 순서와 진행도 그리고 각 기능별 구현하는 속도가 주어진다. 기능이 배포가 될 때 몇개의 기능이 한번에 배포가 되는지 알아보는 문제이다.
이 때, 기능의 진행 정도는 100 이하의 자연수이며 기능의 진행 속도도 100 이하의 자연수이다. 따라서, 아무리 오래 걸리는 케이스여도 반복문을 100번만 반복해주면 문제를 해결해줄 수 있다.
따라서, 개발과 업데이트 이렇게 두가지 역할을 수행하는 기능을 구현하여 문제를 해결하여 주었다. 이 때 업데이트에서는 break를 활용하여 배포시 얼마나 많이 업데이트를 시켜야하는지 계산해주었다.
구현코드
package pgm_42586;
import java.util.ArrayList;
public class Solution {
public Integer[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> result = new ArrayList<>();
int num = 0;
while (num != progresses.length){
develop(progresses,speeds);
int updateCount = update(progresses, num);
if(updateCount != 0){
result.add(updateCount);
num += updateCount;
}
}
return result.toArray(new Integer[0]);
}
public void develop(int[] progresses, int[] speed){
for(int i = 0; i < progresses.length; i++){
progresses[i] += speed[i];
}
}
public int update(int[] progresses, int now){
int count = 0;
for(int i = now; i < progresses.length; i++){
if(progresses[i] > 99){
count++;
}
else
break;
}
return count;
}
}
시간복잡도
develop이 이루어지는 과정이 가장 시간이 오래걸리게 된다.
n이 progresses의 크기라고 하면, O(n)가 된다.
잘못된 지식이나 궁금한 내용이 있을 경우 편하게 댓글 남겨주시면 감사하겠습니다 :)
728x90
728x90
'CodingTest > Programmers' 카테고리의 다른 글
[PGM_42626] 더 맵게 (Java) (0) | 2022.01.30 |
---|---|
[PGM_42626] 더 맵게 (Java) (0) | 2022.01.30 |
[PGM_12899] 124 나라의 숫자 (Java) (0) | 2022.01.29 |
[PGM_62048] 멀쩡한 삼각형 (java) (0) | 2022.01.27 |
[카카오] 양궁대회 (java) (0) | 2022.01.22 |