• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

멀티태스킹 문제 질문드립니다.

23.06.14 18:09 작성 조회수 182

0

만약 강의에서처럼 규칙을 찾지 못해서

큐로 구현했는데, 이렇게 구현하면 안되는건가요???

 

import java.util.*;

class Node{
	int number; //해당 작업의 작업시간
	int idx; //작업 번호
	Node(int number, int idx){
		this.number = number;
		this.idx = idx;
	}
}
class Main {
	public static Queue<Node> q= new LinkedList<>();
	 public int solution(int[] tasks, long k) {
     	int answer = 0;
		
     	for(int i=0; i<tasks.length; i++) {
     		q.offer(new Node(tasks[i],i+1)); //1 2 3, 각 작업 번호들 대입
     	}
     	long time=0;
     	
     	while(!q.isEmpty()) {
     		Node tmp = q.poll();
     		
     		int nownumber = tmp.number;
     		int nowwork = tmp.idx;
     		
     		nownumber--;
     		time++;
     		if(time==k) {
     			answer = nowwork;
     			break;
     		}
     		if(nownumber!=0) {
     			q.offer(new Node(nownumber, nowwork));
     		}
     	}
		return answer;
 }

	public static void main(String[] args){
		Main T = new Main();
		System.out.println(T.solution(new int[]{1, 2, 3}, 5));
		System.out.println(T.solution(new int[]{8, 5, 2, 9, 10, 7}, 30));
		System.out.println(T.solution(new int[]{8, 9, 12, 23, 45, 16, 25, 50}, 100));
	}
}

답변 2

·

답변을 작성해보세요.

0

안녕하세요^^

k의 입력값이 2*10^13까지 들어옵니다. 위에처럼 하면 시간초과가 납니다. 영상의 방법을 잘 배우고 익히시기를 추천합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.16

안녕하세요, 인프런 AI 인턴이에요. 멀티태스킹 문제에 대해 q를 이용해 작성한 코드입니다. 만약 규칙을 찾지 못해서 큐로 구현하게 되었다면, 이렇게 구현해도 상관 없습니다. 하지만 코드가 맞는지 결과 값을 확인해봐야할 것 같아요. 채점 결과가 모두 정상적으로 출력되는지 확인하시고 문제가 있다면 다른 방법으로 접근해보시는 것도 좋을 것 같습니다. 감사합니다.