목록Algorithm (425)
Mini

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

https://www.acmicpc.net/problem/2670* 풀이1 (N^2)#includeusing namespace std; typedef long long ll;int n;double a[10000+4];double ret;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=0;i>a[i]; ret = max(ret, a[i]); // 단일 요소도 체크!!! } for(int i=0;ifor(int j = i+1)단점 : 단일요소 체크를 추가로 넣어줘야함 * 풀이2 (N^2)for(int j=i ~)장점 : 단일요소 체크를 포함함 * 풀이3 (NlogN)그리디? ..

https://www.acmicpc.net/problem/14003* 풀이각 숫자에 대해ans[ ] 에 {idx, num}을 저장 해 놓는게 키포인트이후 뒤부터 탐색pos=len-1일때 stack에 넣기스택에 넣고빼면 역순출력 완성헤맸던 부분lower_bound 대상은 lis임. a가 아님lower_bound 범위는 (lis, lis+len임). lis + n이 아님초기화는 max+1로 초기화 (역시 lis가 대상. a 가 아님)#includeusing namespace std; typedef long long ll;int len, n;ll a[1000000+4];ll lis[1000000+4];pair ans[1000000+4]; // pos,numint main(){ ios_base::sync_w..

https://www.acmicpc.net/problem/1561* 풀이처음보는 형태의 문제ret 값을 찾은후, 추가 계산이 필요하다.왜냐면 , 찾은 ret 값은 n명 이상을 태울수있는 최소시간이다.딱 n명을 태우는 시간이 아니다.nret를 찾고, ret-1분에서 탄사람수 계산ret분에서 놀이기구를 순회하면서 정확히 n번째 사람 찾기 * 전체코드#includeusing namespace std; typedef long long ll;ll ret, n,m;ll a[10000+4];int go(ll x) { ll temp=m; // 시작하자마자 m 명 태우고 시작 // temp : 태운사람수 for(int i=0;i=n;}int main(){ ios_base::sync_with_stdio(0)..

https://www.acmicpc.net/problem/14627* 풀이어려웠던점각각 원소에대해 순회하면서 나머지를 더하는 방식의 문제아래의 경우, 답이 0이 되어버림개선순회대신, sum을 구하고파길이의 전체합(sum) - (최적의파갯수 * 주문받은 파닭수) 하면 됨sum - (ret*c)를 출력 하면 됨.ex) 1020 - ( 175 * 5 ) = 145#includeusing namespace std; typedef long long ll;ll ret, s,c;ll a[1000000+4];int go(ll x) { ll cnt=0; for(int i=0;i=c;}int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ..