https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include #include #include using namespace std; bool visited[100001]; int BFS(int X, int K){ priority_queue q; q.push(make_pair(0, X)); visited[X] = true; while(!q.empty()){ int cur = q.top().sec..
https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net ※틀린 풀이 #include using namespace std; int cache[1000001]; int A[1000000]; int N; int Lis(int start){ int &ret = cache[start+1]; if(ret != -1){ return ret; } ret = 1; for(int next = start + 1; next < N; ++next){ if(start == -..
https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net ※잘못된 BFS #include #include using namespace std; int dx[2]= {-1, 1}; queue q; bool visited[100001]; int N; int K; int BFS(int X, int cnt){ visited[X] = true; queue q; q.push({X, cnt}); while(!q.empty()){..
https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include #include #include using namespace std; bool visited[10001]; bool visited2[10001][9]; vector a; int arr[9]; int N; int M; void combination(int cnt){ if(M == cnt){ for(int i = 0; i < M; i++){ coutarr[i]; } sort(arr,..
https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net #include using namespace std; int N; int map[18][18]; int cnt; int dx[3] = {0, 1, 1}; // 가로, 세로, 대각선 int dy[3] = {1, 0, 1}; void dfs(int x, int y, int kind){ if(x == N && y == N){ cnt++; return; } for(int i = ..
https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 유명한 0/1 knapsack problem 다이나믹 프로그래밍 문제입니다. 사실 저도 못 풀어서 결국에는 검색을 통해 알게 된 문제... https://gsmesie692.tistory.com/113 Dynamic Programming: 배낭 채우기 문제 (Knapsack Problem) 도둑이 보석가게에 배낭을 메고 침입했다. ..