목록Algorithm (421)
Mini

https://www.acmicpc.net/problem/2169* 헷갈렷던 부분2차원 dp로 안되는 이유dp, ret 초기화 값 문제국룰로 무조건 -1, 0 이 아님!-1, 0이 정답이 될수있는지 체크 필요!불가능한 값으로 초기화할것

https://www.acmicpc.net/problem/17136* 풀이dfs로 한칸씩 보면된다.요령은없다.구현은 추상화, 분리가 핵심..5개제한 -> 카운팅스타? 맵또는 배열가지치기cnt가 ret보다 크다면, 해당 경로는 유망하지 않으므로 가지치기하면 더 최적화 가능#includeusing namespace std; typedef long long ll;int ret=987654321; //맵크기, 나무수, k년int a[14][14];int n=10;map m; ////좌표에 sz의 색종이를 놓을수 있는지int check(int y, int x, int sz) { //범위쳌 //n인경우는 dfs에서검사함 -> 제외 if(y+sz>n || x+sz>n) return 0; for(int ..

https://www.acmicpc.net/problem/16235* 풀이dp문제인줄알고 괜히쫄았음구현은 추상화를 잘하고 나눠서 각각 구현하는게 답인듯.좌표별로 나무정보가 여러개 필요한문제vector arr[14][14]에 각 좌표에 있는 나무들의 나이를 저장죽은 나무를 어떻게 삭제할지vector에서 삭제보다tmp에 산 나무들 저장후,clear후재할당여름에 양분을 어떻게 더해줄지각 좌표에 대해 죽을때마다, 더해줄 양분을 계산, die_cnt에 누적끝나고 yangbun[i][j]에 die_cnt만 더해주면됨. #includeusing namespace std; typedef long long ll;int n,m,k; //맵크기, 나무수, k년int A[14][14]; // 겨울에 줄 양분int yangbu..

https://www.acmicpc.net/problem/1535* 풀이갯수제한dp는dfs(idx, 상태)로 풀면 되는듯?for문으로 할꺼면 뒤에서부터 채우기#includeusing namespace std; typedef long long ll;int n;int hp[24], gi[24];ll dp[24][104];ll dfs(int idx, int cnt) { if(cnt >n; for(int i=0;i>hp[i]; } for(int i=0;i>gi[i]; } cout

https://www.acmicpc.net/problem/1513* 시도1한번에 탐색후dp[y][x][오락실cnt]로 출력하면?문제점else if 남발보다는 종료조건 사용할것ret+=가 아니라 ret = ( 좌dfs + 우 dfs) 형태가 맞음.트리그린후, 재귀로 이해#includeusing namespace std; typedef long long ll;int n, m, c;int a[54][54];ll dp[54][54][54]; // y, x, 오락실 번호: 경우의 수const int mod = 10000007;ll dfs(int y, int x, int cnt) { if(y n || x > m) { return 0; // 범위 밖 } if(y == n && x == m) { ..

https://www.acmicpc.net/problem/4781* 시도1사탕선택 o,x로 하면될듯?갯수가 무한대임 -> 불가능 * 풀이갯수가무한대인경우 , 상태를 dfs(남은돈) : 그때 최대칼로리로 정의, idx는 제거dfs내 for문으로 완탐필요!!for내에서 가능한경우, 노드를 계속생성함!!소수처리방법1scanf로 받아서 각각처리또는 cin으로 받아서 round 처리 #includeusing namespace std; typedef long long ll;int n;double m;vector> v; //칼로리, 가격ll dp[10000+4]; //돈(m) 최대 : 10000원ll dfs(int money) { if(money =0) { ret=max(ret,dfs(money-v..

https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr* 풀이split해서 vector에 넣음쌍으로 완탐이때, count 변수가 중요한 역할skip할 갯수같은패턴이 몇번나왔는지 #include using namespace std;int ret=987654321;vector split(string s, int dan){ vector ret; for(int i=0;i v = split(s,dan); int i = 0; while(i 1) { ..

https://www.acmicpc.net/problem/2565* 풀이완탐?조합으로 뽑아서 되는지 검사하면?조합연속합 공식 (완탐)100C1 + 100C2 + ... + 100C100 = 2^100 -1 -> 불가혹시 LIS?#includeusing namespace std; typedef long long ll;int n;int lis[104],len;vector> v;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=0;i>a>>b; v.push_back({a,b}); } sort(v.begin(),v.end()); for(int i=0;i