목록Algorithm (428)
Mini

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); ..

https://www.acmicpc.net/problem/16434* 풀이어려웠던점long long일때, en값을 정하는부분LLONG_MAX 를활용 or 1e18로 해도됨용사가 선빵을 때린다는점n회 공격이 필요한경우, n-1회만 맞으면됨n번째 공격에서는 몹이 죽어서 공격을 받지 않음여기서 용사가 공격받지 않는다는 사실을 추론해내야함.#includeusing namespace std; typedef long long ll;struct A { ll t,a,h;};ll n,atk;ll ret;vector v;//최대피가 x일때, 되는지bool go(ll x, ll atk) { ll tmp=x; //초기 최대피 for(int i=0;itmp) x=tmp; //최대 hp 초과 불가능 } }..

https://www.acmicpc.net/problem/1269* 풀이1set에 넣고, binary_search로 찾아서 제거 #includeusing namespace std; int t;int n,m;vector a,b;set s;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=0;i>tmp; a.push_back(tmp); s.insert(tmp); } for(int i=0;i>tmp; b.push_back(tmp); s.insert(tmp); } sort(b.begin(),b.end()); //정렬주의!! for(int ..

https://www.acmicpc.net/problem/6236 * 풀이1문제가 좀 난해했다. 반복인출 x통장에 남은돈을 사용할수 없음. 무조건 집어넣어야함. x원만 가능.반복인출 불가능 -> 안되는 경우 예외처리 추가go함수#includeusing namespace std; int n,m,ret;int a[100000+4];int go(int x) { // 인출할돈이 X 일때, 가능한지 //인출할돈보다 써야할돈이 크면 반드시 실패 for(int i=0;i x) { return 0; } } int cnt=1; //인출한 횟수 int remain=x; // 남은돈 for(int i=0;i>n>>m; for(int i=0;i>a[i]; } int..

https://www.acmicpc.net/problem/2343* 풀이완탐 : 이중 for문이분탐색 : 첫번째 for문을 이분탐색으로 교체 go 함수 구현이 빡센문제f(1)이 거짓이 나와야 되는 문제 발생예외처리 필요어떤 강의가 블루레이보다 긴경우, 무조건 false를 반환하도록 처리 필요.강의 중 하나라도 Blu-ray 용량보다 긴 경우, 해당 용량(x)은 적합하지 않으므로 무조건 false를 반환.en= mid-1st = mid +1음수기반 카운팅 필요양수기반은 case가 많아져서 너무 복잡// x : 빼고 남은크기int temp = x; // 블루레이의 크기 저장int cnt = 0;for(int i = 0; i 초기화 주의최대 길이 = 10000분 * 최대갯수 여야함int st=1;int en..