목록Algorithm/Dynamic Programming (14)
DOTY
코딩테스트 연습 - 합승 택시 요금 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오랜만에 다익스트라 리마인드할 겸 풀었다. // 1. 다익스트라 사용 // 2. 구해야 할것 // 2-1. 처음부터 혼자 가는 비용 // 2-2. 중간까지 같이 갔다가 혼자 가는 비용 // 3. 2-1, 2-2 가장 작은 수 구하기 #include using namespace std; int vertex[201]; // 정점으로 부터의 비용 저장 vector dij[201]; // 그래프 저장 int INF = 400..
12865번: 평범한 배낭 (acmicpc.net) 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 혼자 해보려고 시도 했다가 시간만 많이 쓴 문제 // DP - Knapsack #include using namespace std; int bag[101][100001] = {0, }; pair object[101]; int main(void) { int N, K, W, V; cin >> N >> K; for(int i = 1; i > W >> V..
코딩테스트 연습 - N으로 표현 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SET 활용이 미숙해서 헤맴 + 아이디어가 떠오르지 않음 이었다.... #include using namespace std; int DP[9]; int solution(int N, int number) { int answer = -1; fill_n(DP, 9, 0); set DP[9]; set::iterator iter_find; set::iterator iter_begin; set::iterator iter_end; i..
1504번: 특정한 최단 경로 (acmicpc.net) 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 시간 초과나 생각하지 않은 예외가 있어 틀릴줄 알았던 문제 #include using namespace std; int vertex_1[801]; // v1먼저 가는 경우 int vertex_2[801]; // v2먼저 가는 경우 int dij[801]; // 0. DIJ 구현 (3.2) // 1. 1에서 V1 또는 V2로 가는 길 찾기 // 2. V1또는 V2에..
코딩테스트 연습 - 등굣길 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀다가 김 빠진 문제. #include using namespace std; int solution(int m, int n, vector puddles) { int answer = 0; int map[101][101] = {0, }; for(int i = 0; i < puddles.size(); i++) { map[puddles[i][1]][puddles[i][0]] = -1; } for(int i = 1; i
1238번: 파티 (acmicpc.net) 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 역시나 다익스트라로 풀은 문제긴 한데 메모리나 시간초과 날줄 알았는데 맞춘 문제.. #include using namespace std; int answer[1001]; int vertex[1001]; int dij[1001]; int rev_dij[1001]; void do_dij(int N, int X, vector dij) { fill_n(vertex, 1001, 100001); pr..
13549번: 숨바꼭질 3 (acmicpc.net) 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 뻘짓 하다가 시간만 쓴 문제 #include using namespace std; int cost[100001]; int dij[100001]; int main(void) { fill_n(cost, 100001, 100002); fill_n(dij, 100001, 2); vector dij(100001); int N, K; cin >> N >> K; dij[0].push_back..
1916번: 최소비용 구하기 (acmicpc.net) 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 다익스트라 사용한 문제. 계속 틀려서 고민하다가 어이없게 맞춘 문제인데 어떤 차이가 있는지 모르겠다. #include using namespace std; int cost[1001]; int dij[1001]; int main(void) { fill_n(cost, 1001, 100000001); fill_n(dij, 1001, 100001); // dij : arrive po..
1753번: 최단경로 (acmicpc.net) 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 다익스트라 알고리즘을 사용했다. #include using namespace std; int vertex[20001]; // 정점으로 부터의 길이 int dij[20001]; int INF = 999999; int main(void) { fill_n(dij, 20001, 11); fill_n(vertex, 20001, 999999); vector dij(20001); int V,..
www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 요즘 다른 공부를 좀 하고 있어서 코딩은 잘 안하는거 같다... ㅠㅠㅠ 틈틈히 해야하는데 ㅠ #include using namespace std; int memoi[1001] = {0, }; int cards[1001] = {0, }; int dp(int x) { memoi[1] = cards[1]; if(x == 1) { return memoi[1]; } for(int i = 2; i > n; for(int i = ..