ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 1로 만들기 - 1463
    백준 2020. 3. 16. 21:03
    반응형

    dp관련 문제구요 접근 방식은 다른 문제와 크게 다르지 않습니다. 

     

    근데 제가 보기에도 코드가 별로 좋지 않네요...ㅠㅠ 방학때 놀지 말고 공부 좀 할 걸 그랬습니다

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    //계산된 값을 저장할 배열
    unsigned int cache[1000001];
    
    
    int func(int para) {
    	
    	//함수에서 3,2로 나누거나 1을 뺐을 때 저장될 변수
    	int result[3];
    	fill_n(result, 3, 1234567);
    	//기저
    	if (para == 1) {
    		return 0;
    	}
    	else if (cache[para] != 0) {
    		return cache[para];
    	}
    	
    	if (para % 3 == 0) {
    		result[0] = para / 3;
    		result[0] = func(result[0]);
    	}
    	else {
    		result[0] = 1234567;
    	}
    
    	if (para % 2 == 0) {
    		result[1] = para / 2;
    		result[1] = func(result[1]);
    	}
    	else {
    		result[1] = 1234567;
    	}
    
    	result[2] = para - 1;
    	result[2] = func(result[2]);
    
    	for (int i = 0; i < 3; i++) {
    	}
    	sort(result, result + 3);
    	for (int i = 0; i < 3; i++) {
    	}
    	cache[para] = result[0] + 1;
    	return cache[para];
    }
    
    int main() {
    	fill_n(cache, 1000001, 0);
    	cache[1] = 0;
    
    	unsigned int x;
    	cin >> x;
    	
    	cout << func(x) << '\n';
    	return 0;
    }
    반응형

    '백준' 카테고리의 다른 글

    [백준] 큐2 - 18258  (0) 2020.07.25
    부분 합 - 1806  (0) 2020.03.16
    집합 - 11723  (0) 2020.03.06

    댓글

Designed by Tistory.