인프런 커뮤니티 질문&답변

vkfksaosldk님의 프로필 이미지
vkfksaosldk

작성한 질문수

자바 코딩테스트 - it 대기업 유제

6. "멀티태스킹" 문제 해법

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

작성

·

230

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

vkfksaosldk님의 프로필 이미지
vkfksaosldk

작성한 질문수

질문하기