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

xogh7532님의 프로필 이미지
xogh7532

작성한 질문수

코딩테스트 실전 모의고사(with C++) : 대기업 대비

3. 멀티태스킹 코드해설(효율성있는 코드구현)

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

작성

·

122

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

자바로 작성해서 예제는 맞게 나오는데, 제출하니까 틀렸다고 나옵니다. 어디가 잘못 된걸까요??

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] argvs) {
		Scanner sc = new Scanner(System.in);
		
		int n=sc.nextInt();
		int[] num = new int[n+1];
		int[] st = new int[n+1];
		
		for(int i=1; i<=n; i++)num[i]=sc.nextInt();
		
		int k=sc.nextInt();
		
		for(int i=1; i<=n; i++) st[i] = num[i];
		
		Arrays.sort(st);
		
		int rest=num.length; //처리해야 할 작업 개수
		
		for(int i=1; i<st.length; i++) {
			long time=((long) rest * (st[i] - st[i-1])); //몇번의 회전에 해당 작업이 끝나는가
			if(time>k) {
				long idx= k%rest; //어디서 멈춰야하는지 구하는 변수
				int cnt=0;
				for(int j=0; j<num.length; j++) {
					if(num[j]>=st[i]) {
						if(cnt==idx) {
							System.out.print(j);
							System.exit(0);
						}
						cnt++;
					}
				}
			}
			else {
			k-=time;
			rest--;
			}
		}
		System.out.print(-1);
	}
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

xogh7532님의 질문에 대해 답변 드릴게요.

자바로 멀티태스킹 문제에 대한 코드를 제출했는데, 예제는 정상적으로 돌아가고 제출하면 틀렸다고 나오는 경우, 문제가 될 수 있는 부분은 몇 가지가 있습니다. 제출하신 코드를 살펴보면, 주로 인덱스를 다룰 때 발생할 수 있는 문제점들이 보입니다.

  • 배열의 인덱스는 0부터 시작하는데, for(int i=1; i<=n; i++)num[i]=sc.nextInt();와 같이 1에서 시작하는 것은 정상적입니다. 그러나 for(int j=0; j<num.length; j++)에서 num[j]를 탐색할 때, j=0에서 시작이므로 출력할 때 System.out.print(j); 대신 System.out.print(j+1);을 사용해야 할 수 있습니다. 이는 문제의 인덱스 요구 사항에 따라 달라질 수 있습니다.

  • 또 다른 가능성으로는, 제출한 코드가 특정 조건(예를 들어, 모든 작업이 동일한 시간에 끝나는 경우나 특정 작업의 처리 시간이 매우 큰 경우 등)에서 예외적인 상황을 제대로 처리하지 못하는 경우입니다. 문제의 설명과 예시를 다시 한번 검토하여, 모든 가능한 경우를 코드가 정확하게 처리하고 있는지 확인해보시는 것이 좋습니다.

  • 마지막으로, 문제의 요구사항을 정확히 이해하고 코드를 작성했는지 다시 한 번 확인해보세요. 때로는 문제를 잘못 이해하여 요구하는 로직을 정확히 구현하지 않는 경우도 있습니다.

위의 점들을 검토하시고, 여전히 문제를 해결하기 어렵다면 구체적인 문제 상황 또는 예외 케이스를 설명과 함께 추가 질문을 남겨주세요.

xogh7532님의 프로필 이미지
xogh7532

작성한 질문수

질문하기