inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

85. 수식만들기(DFS활용)

85번 수식 만들기 코드가 time limit이 발생합니다.

323

coli

작성한 질문수 6

0

85번을 풀면서 채점프로그램에서 1번은 success, 나머지 4개는 time_limit이 발생했고, 입출력 결과는 수동으로 해봤을때 잘 나왔습니다. 다음 코드에서 왜 time_limit이 발생한 건가요?

추가로, time_limit이 발생할지 여부를 판단하는 방법이 있을까요? 

 

#include<bits/stdc++.h>
using namespace std;
int n, op[5], res_max=-2147000000, res_min=2147000000;
vector<int> numbers(11);
void DFS(int L, int sum) {
	int i, j;
	if(L > n-1) {
		if(res_max < sum) res_max = sum;
		if(res_min > sum) res_min = sum;
	}
	else {
		for(i=0; i<n-1; i++) { //연산자 개수 
			for(j=1; j<=4; j++) {
				if(op[j] > 0) {					
					op[j]--;	
					if(j==1) DFS(L+1, sum+numbers[L+1]);
					else if(j==2) DFS(L+1, sum-numbers[L+1]);
					else if(j==3) DFS(L+1, sum*numbers[L+1]);
					else if(j==4) DFS(L+1, sum/numbers[L+1]);				
					op[j]++;
				}
			}		
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false);
	freopen("input.txt", "rt", stdin); 
	int i;
	cin>>n;
	for(i=1; i<=n; i++) {
		cin>>numbers[i];
	}
	for(i=1; i<=4; i++) {
		cin>>op[i];
	}
	DFS(1, numbers[1]);
	cout<<res_max<<"\n"<<res_min;
	return 0;
}

C++ 코테 준비 같이 해요!

답변 1

0

김태원

안녕하세요^^

재귀안에 2중 for문이 있어야 하나요? 강의 영상을 잘보시고 비교해보세요.

0

coli

오 그렇군요! 감사합니다

 

테스트 케이스 질문

0

391

1

병합정렬 시간복잡도 질문

0

476

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1368

2

질문드립니다.

0

392

1

질문드립니다!

0

438

1

dev 프로그램 질문

0

277

1

문제가 이해가 안되요

0

382

1

4번 나이차이 문제 접근법 질문 드립니다.

0

310

1

source file not compiled

0

1076

3

59번 질문드립니다.

0

378

1

25번 문제 질문

0

352

1

4. 나이차이 문제 질문입니다.

0

379

1

90번 라이언 킹 심바 1번 테스트 케이스

0

473

1

71번 문제 전역 변수 질문 있습니다

0

367

1

75번, 79번 priority_queue관련

1

363

1

75.최대 수입 스케줄

0

404

2

복면산 정답의 수

0

438

1

테스트 케이스에 대해서

0

452

1

수업 내용 질문입니다!

1

237

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

848

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

259

1

다른 풀이 방식

0

320

1

크루스칼 vs 프림

0

316

1

숫자 총개수 small 질문있습니다.

0

246

1