T_era
[JAVA] 큐 : 기능개발 본문
1. 문제내용

요약
두개의 배열, 개발진도와 개발속도가 담긴 데이터가 있다.
개발속도에 따라 개발진도가 상승할 때 가장 앞에서부터 100이 달성됐을 때
순차적으로 100이 달성된 진도가 있으면 그 갯수만큼 저장하라
2. 접근방법
순차적으로 값이 들어가야 하기 때문에 큐를 쓸생각을 해보았다.
두 배열을 반복을 통해 값을 변환하고 앞에서부터 100이 달성 됐을 때 순차적으로 100이 달성한 값이 있는지 확인하고
100이하의 값이 나올 때까지 count를 증가해 큐에 count를 넣는 방법을 사용해봤다
3.구현과정
결과를 저장할 큐, 순차적 탐색을 위한 length, 100이상의 값이 나올 때 사용할 count
Queue<Integer> queue = new LinkedList<>();
int length = 0;
int count = 0;
length가 개발진도 데이터의 범위를 넘지 않을 때
100이상의 값이 나오게되면 count와 length가 같이 증가하고
더이상 존재하지 않으면 큐에 저장 count를 초기화 해주는 방향으로 구현했다
while(length < progresses.length){
if(progresses[length] >= 100){
count++;
length++;
if(length < progresses.length) continue;
}
if(count != 0){
queue.offer(count);
count = 0;
}
for(int i = length; i < progresses.length; i++){
progresses[i] += speeds[i];
}
}
return queue;
4. 결과
의도한 데로의 결과가 나왔다
전체코드
import java.util.*;
public class Solution {
public Queue<Integer> solution(int[] progresses, int[] speeds) {
Queue<Integer> queue = new LinkedList<>();
int length = 0;
int count = 0;
while(length < progresses.length){
if(progresses[length] >= 100){
count++;
length++;
if(length < progresses.length) continue;
}
if(count != 0){
queue.offer(count);
count = 0;
}
for(int i = length; i < progresses.length; i++){
progresses[i] += speeds[i];
}
}
return queue;
}
}'Programing > Programers' 카테고리의 다른 글
| [JAVA] 큐 : 프로세스 (0) | 2025.04.14 |
|---|---|
| [JAVA] 스택 : 올바른 괄호 (1) | 2025.04.14 |
| [JAVA] 스택 : 같은 숫자는 싫어 (0) | 2025.04.14 |
| [JAVA] 해시 : 베스트앨범 (1) | 2025.04.14 |
| [JAVA] 해시 : 의상 (0) | 2025.04.14 |