전체 글265 백준(BOJ) 14501 퇴사 * 그냥 간단한 dp문제이다. 핵심은 오늘까지 일에서 번돈이 어제까지의 번 돈보다 작은경우 오늘까지 번돈의 값을 바꿔준다. * : dp를 풀어본 사람이라면 금방 풀 수 있을것 같다. #include using namespace std; int n,a,b,r[30],mx=0; int main() { scanf("%d", &n); for (int i = 1; i r[i + a - 1]) r[i + a - 1] = r[i - 1] + b; if (r[i - 1] > r[i]) r[i] = r[i - 1]; // 오늘까지 일에서 번돈이 어제까지의 번 돈보다 작은경우 오늘까지 번돈의 값을 바꿔준다. if (r[i] > mx) mx = r[i]; } printf("%d", mx); return 0; } 2018. 6. 1. 백준(BOJ) 1126 같은 탑 *** 이 문제는 설계하는데 시간이 오래걸렸다. 다른 디피 문제에 비해 기준으로 잡을 값을 무엇으로 정할지가 어려운 문제였다. 많은 시간 생각한 결과 차이를 이용하여 값을 저장 하지 않으면 안된다는 생각을 하였다. 설계를 다하였다면 코드는 금방 짤 수 있다. #include #include #include #include #include #include #include #include #include #include #include #define MAX 500001 #define INF 987654321 #define MOD 1000000 typedef long long ll; #pragma warning(disable:4996) using namespace std; int n,tmp,ans=-1,map[51].. 2018. 6. 1. 백준(BOJ) 2470번 두 용액 ** 일단 가장 단순하게 푼다면... 당연히 이러면 시간초과가 나겠죠?.... 왜냐 시간복잡도가 n^2나오니까.. 이 개념을 알고있는지를 물어보는 문제인 것 같습니다. #include #include #include #include #include #pragma warning(disable:4996) using namespace std; int s[1000005],mx,mi=1000000001,result[2]; int main() { scanf("%d", &mx); for (int i = 0; i < mx; i++) scanf("%d", &s[i]); for (int i = 0; i < mx; i++) for (int k = i + 1; k < mx; k++) if (abs(s[i] + s[k]) < mi).. 2018. 6. 1. 백준(BOJ) 10610 30 * 이게 왜 그리디 알고리즘에 들어가 있는지는 모르겠다. 그리디 알고리즘 보다는 수학적 개념이 필요할 것 같다. "모든 수들의 합이 3으로 나눠지면 3의 배수이다." 10만 자리의 숫자라는 점을 주의하자~ 즉, 입력을 숫자로 받는 멍충이는 되지말자~ #include #include #include #include #include #include #include #include #include #define MAX 40005 #define MOD 1000000007 #pragma warning(disable:4996) using namespace std; int sum = 0, len; char str[100005]; bool tf; priority_queue pq; int main() { scanf("%s".. 2018. 6. 1. 이전 1 ··· 44 45 46 47 48 49 50 ··· 67 다음