본문 바로가기

cpp46

[개쉬운 풀이] 백준 14002 가장 긴 증가하는 부분 수열 4 (3일차) https://www.acmicpc.net/problem/14002 문제 생각1. 기본적인 LIS 문제이다. 이를 dp를 활용하여 해결해야한다.2. 길이만 출력하는 것이 아닌 수열을 출력해야 하므로 vector를 이용하여서 같이 저장 및 업데이트 한다. 풀이#include #include using namespace std;const int MAX = 1001;int N;vector v;int dp[MAX];vector LIS[MAX];vector answer;void input(){ cin >> N; v = vector (N); for(int i = 0; i > v[i]; }}void sol(){ for(int i = 0; i v[j]){ if(d.. 2024. 11. 24.
[개쉬운 풀이] 백준 20922 겹치는 건 싫어 (2일차) https://www.acmicpc.net/problem/20922 문제 생각1. 현재 위치부터 최장 연속 부분 수열을 찾는다.2. 조건에 부합하지 않는 부분이 나온다면 앞 부분을 삭제하고 다시 최장 부분 연속 부분 수열을 찾는다.-> 슬라이싱 윈도우 풀이#include #include #include #include using namespace std;int N, K;vector v;vector isVisited(100001);void input(){ cin >> N >> K; v = vector (N); for(int i = 0; i > v[i]; }}void sol(){ int start = 0, end = 0; int answer = 0; //슬라이딩 .. 2024. 11. 23.
[개쉬운 풀이] 백준 9205 맥주 마시면서 걸어가기 (1일차) 메일 알고리즘 문제 풀기 1일차 https://www.acmicpc.net/problem/9205  문제 생각1. 맥주는 20박스이고 한 병당 50미터를 움직일 수 있으므로, 다음 목적지까지 1000거리 이내로 가야한다.2. 따라서 현재 위치를 기준으로 다음 편의점을 BFS로 탐색하면서 해당 편의점에 도착했을 때, 바로 페스티벌 장소로 도착할 수 있는지 없는지 판별하면 된다. 풀이#include #include #include #include using namespace std;const int MAX_BEER = 20;struct T{ int x, y;};int t;int n;vector v;T current;T festival;int beer = 20;bool isVisited[101];bool an.. 2024. 11. 22.
[개쉬운 풀이] 백준 2493 탑 #include #include #include using namespace std;const int MAX = 500001;int n;int tower[MAX];vector stack;void init(){ memset(tower, 0, sizeof(tower));}void input(){ cin >> n; for(int i = 0; i > tower[i]; }}void print(){ if(stack.empty()) cout tmp) { print(); break; } else{ stack.pop_back(); .. 2024. 11. 10.