본문 바로가기

분류 전체보기

728x90
(53)
AWS Elastic Beanstalk로 NodeJS Express 앱 배포하는 방법::DANIDANI Elastic Beanstalk를 사용하면, 애플리케이션을 실행하는 인프라에 대한 염려 없이 AWS 클라우드에서 애플리케이션을 신속하게 배포 및 관리할 수 있다! 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리하여 매우 편리하다. 1. AWS CLI 설치(EB CLI) apt install awsebcli mac os 경우 brew install awsebcli 설치 확인 eb —version 2. AWS 계정 바꾸는 법 / 로그인은 바로 (2)번으로 (1) AWS CLI 로그아웃 rm ~/.aws/config rm ~/.aws/credentials (2) AWS CLI 로그인 aws ..
[백준] 2293 동전1 문제풀이 C++ :: DP(다이나믹 프로그래밍) :: DANIDANI 2293 동전1 https://www.acmicpc.net/problem/2293 동전 0 문제는 그리디 알고리즘을 활용했다면 동전 1 문제는 DP(Dinamic Algorithm, 다이나믹 알고리즘)을 사용한다. 예제에서 동전은 총 3 종류, 1 2 5 가 있다. arr 배열로 동전의 가치들을 저장해주고 문제는 dp 배열을 사용하여 접근한다. 먼저 dp [0]=1로 두는데, 이는 아무 동전도 선택하지 않은 경우도 하나의 경우의 수인 것이다. 각각의 동전에 대하여 for문을 돌린다. 먼저 동전 1에 대해서 10원을 만드는 경우의 수를 계산해준다. 1(=j)부터 10(=k)까지 dp[j] += dp[j - 1] 을 해준다. 동전 2에 대해서는 0원과 1원은 만들지 못하니 패쓰하고 j = 2부터 10(=k)..
[백준] 1463 1로 만들기 문제풀이 C++ :: DP(다이나믹 프로그래밍) :: DANIDANI 1463 1로 만들기 https://www.acmicpc.net/problem/1463 DP(Dinamic Programming, 다이나믹 프로그래밍) 으로 푸는 문제! 시간 복잡도는 O(N) bottom-up 방식으로 for문을 사용해서 풀었다. index 가 n+1 인 배열을 만든다. index가 문제에서의 연산하는 숫자! dp [1] = 0로 초기화를 해준다. (1일 경우 연산 안 해도 됨) 할 수 있는 연산은 3가지 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 3가지 경우의 최솟값을 저장하면 된다. 예를들어 dp [4]인 경우 2로 나누어 떨어지는데 dp[4/2] + 1 = dp [2] + 1 = 2, dp [3] + 1 =..
[백준] 1806 부분합 문제풀이 C++ :: 투 포인터 :: DANIDANI 1806 부분합 https://www.acmicpc.net/problem/1806 기본적인 투 포인터 알고리즘 문제! (시간복잡도 O(N)) 문제 딱 보고 이중 for문으로 풀면 시간초과 날 수 있다. (시간복잡도 O(N^2)) #include #include #include using namespace std; int main() { int n, s; cin >> n >> s; vector arr(n); for (int i = 0; i > arr[i]; int start = 0, end = 0, sum = 0, minLen = 0x7FFFFFF; while (start = s) {// 현재 포인터의 합이 s보다 크거나 같으면 start ++ minLen = mi..
투 포인터 알고리즘(Two Pointers Algorithm) :: DANIDANI 투 포인터 알고리즘은 1차원 배열이 있고 이 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 것을 얻는 형태의 알고리즘이다. 절대 답이 되지 않는 경우는 계산하지 않아 시간을 단축시켜준다. Q. 배열에서 부분 배열의 합이 M이 되는 경우의 수를 구하여라! A1. 가장 쉽고 단순한 방법으로는 이중 for문을 이용해서 모든 경우의 수를 구할 수 있다. 시간 복잡도 O(N^2) A2. 투 포인터 알고리즘을 이용하면 시간복잡도를 O(N)으로 단축시킬 수 있다. 주로 적용되는 문제 유형 - 연속된 수들의 합 - 부분 배열의 합 풀이 방법 1. 포인터 2개가 같은 방향으로 진행해 나아가는 것 2. 포인터 2개가 양끝에서 반대로 진행하는 것 풀이 방법 1,2의 예제를 하나씩 풀어보자 대표..