Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static String solve(ArrayList<String> carList, double ferryLength, int numCars) {
- double capacity = ferryLength;
- int tripNum = 0;
- String output = tripNum + " " + ":";
- StringBuilder sb = new StringBuilder();
- sb.append(output);
- if (numCars == 0) {
- return "Day Off!";
- } else {
- ArrayList<String> leftBank = new ArrayList<String>();
- ArrayList<String> rightBank = new ArrayList<String>();
- ArrayDeque<String> boat = new ArrayDeque<String>();
- // add cars to respective banks
- for (String s : carList) {
- if (s.contains("left")) {
- leftBank.add(s);
- } else {
- rightBank.add(s);
- }
- }
- while (leftBank.size() != 0 && rightBank.size() != 0) {
- // check if left bank car can fit on boat
- for (int i = 0; i < leftBank.size(); i++) {
- if (capacity >= 0) {
- if (convert(getLength(leftBank.get(i))) <= capacity) {
- boat.add(leftBank.get(i));
- capacity = capacity - convert(getLength(leftBank.get(i)));
- leftBank.remove(i);
- i--;
- } else {
- tripNum++;
- for (String car : boat) {
- sb.append(" " + getPlate(car));
- boat.pop();
- }
- sb.append("\n");
- capacity = ferryLength;
- }
- }
- }
- // check if right bank car can fit on boat
- for (int i = 0; i < rightBank.size(); i++) {
- if (capacity >= 0) {
- if (convert(getLength(rightBank.get(i))) <= capacity) {
- boat.add(rightBank.get(i));
- capacity = capacity - convert(getLength(rightBank.get(i)));
- rightBank.remove(i);
- i--;
- }
- // capacity is full empty boat and add to output string
- } else {
- tripNum++;
- sb.append(output);
- for (String car : boat) {
- sb.append(" " + getPlate(car));
- boat.pop();
- }
- sb.append("\n");
- capacity = ferryLength;
- }
- }
- }
- }
- return sb.toString();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement