피자배달거리(DFS) 시간초과 질문 있습니다.
572
4 asked
안녕하세요. 좋은 강의 만들어주셔서 덕분에 알고리즘 공부를 수월하게 하고 있습니다.
다름이 아니라, 문제 풀이하는 방법은 강의와 유사하게 하였습니다.
저는 DFS를 활용할 때 선택된 피자가게의 index가 아닌, 객체 자체를 selected 배열에 넣는 방식으로 진행하였습니다. 예제와 똑같은 출력값이 나왔으나, 시간 초과라고 하여서 강의와 아예 똑같은 코드를 쳐봐도 시간초과라고 나옵니다.
아래에 첨부한 코드는 초반에 제가 입력한 코드인데, 어느 부분에서 시간초과가 나는 건지 알려주실 수 있을까요?
class Dis{
public int x, y;
public Dis(int x, int y){
this.x = x;
this.y = y;
}
}
public class Code27 {
public static int n, m;
public static int min = Integer.MAX_VALUE;
public static ArrayList<Dis> house, pizza;
public static Dis[] selected;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
house = new ArrayList<>();
pizza = new ArrayList<>();
selected = new Dis[m];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
int location = sc.nextInt();
if(location==1) house.add(new Dis(i, j));
else if(location==2) pizza.add(new Dis(i, j));
}
}
DFS(0,0);
System.out.println(min);
}
public static void DFS(int L, int start){
if(L==m){
min = Math.min(min, distCalc(selected));
}else{
for(int i=start; i<pizza.size(); i++){
selected[L] = pizza.get(i);
DFS(L+1, start+1);
}
}
}
public static int distCalc(Dis[] selected){
int sum = 0;
for(Dis h : house){
int dis = Integer.MAX_VALUE;
for(int j=0; j<selected.length; j++){
dis = Math.min(dis,(Math.abs(h.x - selected[j].x) + Math.abs(h.y - selected[j].y)));
}
sum += dis;
}
return sum;
}
}
Answer 2
0
안녕하세요^^
제가 봐도 selected 를 객체 배열로 잡은 것 이외에는 딱히 시간초과가 날 사항이 없어 보입니다. 제가 제공한 정답코드로 채점해보세요. 저는 방금 제 코드로 해보니 정상처리가 됩니다. 제공한 코드와 본인 코드를 비교해보세요.
채점 사이트 관련 질문드립니다
0
7
1
봉우리 문제 질문입니다
0
74
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
59
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
66
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
64
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
77
2
6-7 강의에서
0
44
1
6-6. 장난꾸러기 질문 있습니다.
0
40
1
강의 수강후 코딩테스트
0
102
1
answer 변수 사용 여부
0
38
1
2중 for문
1
79
2
2-11. 임시반장정하기 (Runtime Error)
0
58
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
64
1
이런 풀이는 어떨까요
0
38
1
자바 스트림 방식의 효율성 질문 드립니다.
0
50
1
알고리즘 자료 구조들..
0
55
1
StringBuilder vs BufferdWriter
0
42
1
원더랜드(프림)
0
42
1
이런 코드는 어떤가요?
0
54
1
bfs 풀이
0
50
1
병합정렬
0
51
1
26강 임시반장 정하기에서 질문이 있습니다
0
40
1
이번달말에 완강 후 공부 방향
0
67
1
제가 이런 코테가 처음인데 공부방법을..ㅠ
1
106
1

