T_era

[JAVA] 큐 : 기능개발 본문

Programing/Programers

[JAVA] 큐 : 기능개발

블스뜸 2025. 4. 14. 17:48

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