코드#include #include #include #include using namespace std;typedef long long ll;int n;double res, x, y, r;vector> v;// 신발끈 공식. 오목한 다각형이 있을 수 있으므로 절대값은 마지막에 적용double go(double x, double y, double x2, double y2, double x3, double y3) { return (x*y2 + x2*y3 + x3*y - x2*y - x3*y2 - x*y3)*0.5;}int main() { cin >> n; cout > x >> y; v.push_back({x, y}); } double stdx = v[0].first; ..
전체 글
Hello World코드#include #include #include using namespace std;typedef long long ll;ll n,s,b,res=2000000004;vector> v;int main() { cin >> n; for(int i = 0; i > s >> b; v.push_back({s,b}); } for(int i = 1; i 신맛과 쓴맛이 있는 것들을 받아준 후, 비트연산자를 이용해 부분집합마다 조건에 맞는 값을 구하고 그 중 최소값을 찾아주었다.
코드#include #include #include using namespace std;const int INF = 987654321;const int MAX_N = 16;int n, dist[MAX_N][MAX_N], dp[MAX_N][1 외판원 순회 문제는 dp로 해결할 수 있는 엄청 유명한 문제 중 하나라고 한다. 처음에는 팩토리얼을 돌려야 하나 싶었는데 그러면 엄청난 시간이 걸릴 거 같아서 다른 방법을 생각했다. 다행히 엄청 똑똑한 누군가가 O(2^n*n^2)로 해결하는 방법을 만들어 두었고, 이 아이디어를 가져왔다. 순회할 그래프를 만들어주고, 값을 저장할 dp 배열을 만들어준다. 이때 dp 배열의 첫번째 요소는 현재 위치가 어디인지를 저장하고, 두번째 요소에는 방문현황을 저장해준다.비트연산자를..
코드#include using namespace std;typedef long long ll;const int INF = 1000000007;int n;ll a,b,tmp;int main() { scanf("%d", &n); // 0일 때 예외처리 if(n == 0) { printf("%d\n", 0); return 0; } b = 1; // 피보나치 수열 규칙 for(int i = 2; i 변수 3개로 값을 저장해서 해결해보았다. C++로는 배열을 만들어서 저장하는 풀이만 했던 거 같아서 다른 풀이를 선택해보았다.
코드#include #include using namespace std;int n, a[1003],cnt[1003],res;int main() { scanf("%d", &n); for(int i = 0; i 문제에 따르면, 크기가 작은 상자를 최대한 많이 넣어야 한다. 이는 최대부분증가수열 (LIS)로 해석할 수 있다. 위 풀이는 LIS를 O(NlogN)으로 구하는 코드이다.
코드#include using namespace std;typedef long long ll;ll n, a[103][103], dp[103][103];ll go(int x, int y) { if(x >= n || y >= n) return 0; // 범위를 벗어난 경우 if(x == n - 1 && y == n - 1) { return 1; } if(a[x][y] == 0) return 0; // (n-1,n-1)이 아닐때 0이 나오면 함수 종료 if(dp[x][y] != -1) return dp[x][y]; // 메모이제이션 // 오른쪽으로 가는 경우 + 아래로 가는 경우 dp[x][y] = go(x + a[x][y], y) + go(x, y +..
코드#include #include #include #include #include using namespace std;typedef long long ll;ll tc, n, m, a[1000004],x,y,z,k;void init(vector &tree, int node, int start, int end) { // 리프노드 if(start == end) { tree[node] = a[start]; } else { int mid = (start + end) / 2; init(tree, node*2, start, mid); // 부모 기준 왼쪽 노드 탐색 init(tree, node*2 + 1, mid + 1, end); // 부모 기준 ..
코드#include #include #include #include using namespace std;int n,x,y,res,b[100003];vector> a;vector ress;stack> stk;int main() { cin >> n; a.resize(n); for(int i = 0; i > x >> y; a[i] = {x,y}; } sort(a.begin(), a.end()); // first를 기준으로 정렬 // 최대증가부분수열(lis, Longest Increasement Subsequence) 찾기 for(int i = 0; i 최대증가부분수열 풀이로 해결할 수 있다. 문제에서 전깃줄이 교차하지 않게 하기 위해 없애야 하는 최소 개수를..
상남자의 데이터 관리법최근 개인 프로젝트로 open api를 이용해 뉴스 기사와 베스트셀러를 정리한 페이지를 제작해보고 있습니다. 개인적인 수요에 의해 시작했다가 재미있어서 이리저리 살을 붙이다보니 처음 구상한 내용에 추가된 기능이 있습니다. 그 중 하나가 디테일 페이지를 보는 것입니다. 여기에 필요한 내용을 어떻게 가져올까하다가 url에 데이터를 저장하면 쉽게 가져올 수 있겠다 다 생각해서 url에 데이터를 담아보기로 했습니다. url에 최대 6만자까지 넣을 수 있다고 들었기 때문에 충분히 가능할 것이라 생각했습니다. 참고로, 저의 개발환경은 next.js입니다. 우선 필요한 내용은 제목, 작가, 요약 등 내용 설명에 필요한 것들이었습니다. 데이터 베이스와 서버를 아직 만들지 않기도 했고, 어떻게 저장..
Next 프로젝트 .env 파일에 변수 저장하기 (next_public를 접두사로 붙이기)최근 api 키를 하나 사용해서 개인 프로젝트를 진행하고 있는데, .env 파일에 해당 키를 저장하려고 했다. 저장 후에 process.env.변수명으로 가져오려 했는데, 오류가 발생했다. 분명 콘솔을 찍었을 때, 터미널에는 잘 떴는데 브라우저에서는 undefined가 찍혔다. 어디서 꼬였나 했는데 next 프로젝트에서는 변수명 앞에 next_public을 붙여서 사용해야한다고 한다. 이 해결법은 next.js 9.4부터 적용된다. next_public 말고 다른 환경 변수 적용법도 있는 듯 하지만, 이후 필요할 때 공부하고 적용해 볼 예정이다. next_public을 붙여야 하는 경우.env 파일 내의 모든 환경 ..