본문 바로가기

알고리즘/백준28

백준 19941 햄버거 분배 C++ 문제 보고 그냥 단순하게 왼쪽부터 차례대로 전부 탐색 시간제한이 0.5초이고, n이 20000개, k가 10이다. 최소한 20000 * 10하면 이십만번 탐색하면 0.5초도 안걸린다고 생각해서 전부 탐색해도 된다. 답 #include #include #include using namespace std; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n,k; cin>>n>>k; string a; cin>>a; vector visited(n,false); int ans=0; for(int i=0;i 2024. 4. 21.
백준 17406 배열 돌리기 4 C++ 단순히 손이 많이 가는 백트래킹 배열을 돌릴 순서를 정하고, 배열을 돌리면 된다. 간단한 해설 배열을 돌릴 순서를 정하는 법 단순히 백트래킹 기법을 이용한다. 배열을 돌리는 법 c(거리)에 따라서 모든 거리를 동적으로 돌린다. (rotateArray 함수 부분) 만약 거리가 3이면 먼저 거리 1 회전, 그다음 거리 2 회전 그리고 마지막으로 거리 3 회전을 하면 된다. 나머지 디테일은 전부 생구현 내 아이디어 스케치 답 #include #include #include #include #include using namespace std; vector v(50,vector(50)); deque picker; int n,m,k,r,c,s; int ans=987654321; void rotateArray(vec.. 2024. 4. 16.
백준 22115 창영이와 커피 C++ 단순한 배낭 문제 반례 1 0 1답 : 0 답 #include #include #include using namespace std; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n,k; cin>>n>>k; vector v(n); for(int i=0;i>v[i]; } vector dp(n+1,vector(k+1,200)); dp[0][0]=0; for(int i=1;i 2024. 4. 16.
백준 1106 호텔 C++ 2차원 dp로 할려다가, 기존의 배낭문제처럼 최댓값을 이어서 받는 것은 고객 수의 idx가 배수가 아닐 경우, 문제가 생겨서 1차원 dp로 해결하였다. 주석을 상세히 다시 달아보았다. 적어도 c명 이상이므로, 도시당 고객의 수가 최대 100명이다. 그러므로 c+100 명 이상까지 계산해야 한다. 반례 100 3 7 12 20 30 30 60답 : 57 답 #include #include #include using namespace std; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int c,n; cin>>c>>n; vector v(n); // 고객 수, 비용 for(int i=0;i>v[i].second>>v[i].first; } sort(v.beg.. 2024. 4. 15.