[C++] 프로그래머스 [1차]추석트래픽
·
Algorithm/Programmers
#include #include using namespace std; //초당 최대 처리량은 1초간의 최대개수 int solution(vector lines) { int answer = 0; vector hms; //시작시간 끝시간 //날짜를 초로 바꿔준다. for(int i = 0; i < lines.size(); i++) { double endTime = stod(lines[i].substr(11, 2)) * 3600; //h endTime += stod(lines[i].substr(14, 2)) * 60; //m endTime += stod(lines[i].substr(17, 2)); //s endTime += stod(lines[i].substr(20, 3)) * 0.001; //ss double..
[C++] 프로그래머스 N으로표현 DP
·
Algorithm/Programmers
#include #include #include using namespace std; int make_NN(int N, int counts); int solution(int N, int number) { if(N == number) return 1; vector dp(9); dp[1].insert(N); for(int i = 2; i 0) dp[i].insert(a - b); if(a / b > 0) dp[i].insert(a / b); } } }//for(int y = 0; y < i; y++) } dp[i].insert(make_NN(N, i)); if (dp[i].count(number)) return i; } return -1; } int make_NN(int N, int counts) { int..
[C++] 백준 1197 최소 스패닝 트리 / 최소신장트리
·
Algorithm/Baekjoon
#include #include #include using namespace std; int main() { int V = 0;//정점의 개수 int E = 0;//간선의 개수 int result = 0;//총 가중치 cin >> V; cin >> E; vector lists;//간선들 저장 vector visited(V + 1, false);//방문했는지 1~V priority_queue pq;//가중치, 다음노드 //입력 for (int i = 0; i > temp[j]; lists.push_back(temp); //1~V까지므로 1부터 시작점을 정함 if (temp[0] == 1) { vis..
[C++] 프로그래머스 섬 연결하기 프림알고리즘
·
Algorithm/Programmers
#include #include #include using namespace std; //0left 1right 2weight int solution(int n, vector costs) { int answer = 0; //weight, 간선번호 priority_queue pq; vector visited(n, false); //0부터 시작 for (int i = 0; i < costs.size(); i++) { int left = costs[i][0]; int right = costs[i][1]; int weight = costs[i][2]; if (left == 0) { visited[0] = true; pq.push({ weight, right }); } else if (right == 0) { v..
[C++] 프로그래머스 구명보트 탐욕법
·
Algorithm/Programmers
#include #include #include using namespace std; int solution(vector people, int limit) { int answer = 0; int start = 0; int end = people.size() - 1; //내림차순 정렬 sort(people.rbegin(), people.rend()); while(start
[C++] 프로그래머스 조이스틱 탐욕법
·
Algorithm/Programmers
#include #include using namespace std; struct APos { int count; int pos; }; int solution(string name) { int answer = 0; APos curr = { 0, 0 }; APos prev = { 0, 0 }; for (int i = 0; i < name.size(); i++) { if (name[i] == 'A') { //첫 지점 지정 if (curr.count == 0) curr.pos = i; curr.count++; } else { //현재 a의 길이가 이전 a의 길이보다 길거나 같다면 교체 if (prev.count < curr.count) { prev.count = curr.count; prev.pos = cur..