프로그래머스 - 무지의 먹방 라이브

J-Keonho·2020년 10월 4일
0
post-custom-banner

해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.

프로그래머스 - 무지의 먹방 라이브

https://programmers.co.kr/learn/courses/30/lessons/42891

풀이 : 위치와 양을 저장한 Food class를 Queue에 넣은 뒤 시간 별로 체크해준다.

import java.util.*;

class Solution {
    static class Food {
		int id, t;

		public Food(int id, int t) {
			this.id = id;
			this.t = t;
		}
	}
    public int solution(int[] food_times, long k) {
		LinkedList<Food> qu = new LinkedList<Food>();
		int l = food_times.length;
		for (int i = 0; i < food_times.length; i++) {
			qu.add(new Food(i+1, food_times[i]));
		}
		long t = k;
		while(!qu.isEmpty()) {
			int s = qu.size();
			int time = (int) (t / s);
			t %= s;
			if(time == 0) {
				return qu.get((int)t).id;
			}
			long over = each(qu, time);
			t += over;
		}
		return -1;
	}
	private static long each(LinkedList<Food> qu, int time) {
		long over = 0;
		for(Food f : qu) {
			f.t -= time;
			if(f.t < 0) over -= f.t;
		}
		qu.removeIf(f -> f.t <= 0);
		return over;
    }
}
profile
안녕하세요.
post-custom-banner

0개의 댓글