Coding Challege 3

Programmers Coding Challege Develop Features

Created: 2021-08-11

Author: George Petrovski

Coding Challege-Stack/Queue | Q1 Develop Features

Programmers Coding Challege: Stack/Queue - Q1 Develop features

Solution

package StackQueue;

import java.util.LinkedList;
import java.util.Queue;

public class Q1DevelopeFunction {
	
	public static void main(String[] args) {
		 System.out.println(solution(new int[] { 93, 30, 55 }, new int[] { 1, 30, 5 }));
		 System.out.println(solution(new int[] { 95, 90, 99, 99, 80, 99 }, new int[] { 1, 1, 1, 1, 1, 1 }));
		 System.out.println(solution(new int[] { 20, 99, 93, 30, 55, 10 }, new int[] { 5, 10, 1, 1, 30, 5 }));
		 System.out.println(solution(new int[] { 96, 99, 98, 97 }, new int[] { 1, 1, 1, 1 }));
		 System.out.println(solution(new int[] { 40, 93, 30, 55, 60, 65 }, new int[] { 60, 1, 30, 5, 10, 7 }));
		 System.out.println(solution(new int[] { 93, 30, 55, 60, 40, 65 }, new int[] { 1, 30, 5, 10, 60, 7 }));
	}
	
	public static int[] solution(int[] progresses, int[] speeds) {
		// Declare Queue 
		Queue<Integer> queueAnswer = new LinkedList<>();		
		Queue<Integer> queueProgress = new LinkedList<>();
		Queue<Integer> queueTemp = new LinkedList<>();
		
		// Array to Queue (progresses -> queueProgress)
		for (int i : progresses) {
			queueProgress.add(i);
		}
		
		// 1. Queue Retrieve 
		while (queueProgress.size() != 0) {
			int count = 0;
			int j = speeds.length - queueProgress.size();
			Boolean decision = false;
			
			// queueTemp = progress + speed
			for (int i : queueProgress) {
				queueTemp.add(i + speeds[j]);
				j++;
			}
			
			queueProgress.clear();
		
			if (queueTemp.peek() >= 100) {
				decision = true;
			}
			
			for (int i : queueTemp) {
				if (i < 100 || decision == false) {
					queueProgress.add(i);
					decision = false;
				} else {
					count++;
				}
			}
			
			queueTemp.clear();
			
			if (count != 0) {
				queueAnswer.add(count);
			}
		}

		// Convert Queue to int[]
		int[] answer = new int[queueAnswer.size()];
		for (int i = 0; i < answer.length; i++) {
			answer[i] = queueAnswer.remove();
		}	
		
        return answer;
    }
}