[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..
[C++] 프로그래머스 큰 수 만들기 탐욕법
·
Algorithm/Programmers
#include #include using namespace std; string solve(string n, int maxlength); string solution(string number, int k) { string answer = ""; vector nums(10); int maxlength = number.size() - k; //각 수의 각 위치를 넣는다. 여기서 넣은 개수만큼 그 수의 총개수 for (int i = 0; i = 1; i--) { for (int j = 0; j < nums[i].size(); ..
[C++] 프로그래머스 위클리챌린지 8주차 최소직사각형
·
Algorithm/Programmers
#include using namespace std; int solution(vector sizes) { int answer = 0; int w = 0; int h = 0; for(const auto &i : sizes) { w = max(w, max(i[0], i[1])); h = max(h, min(i[0], i[1])); } answer = w * h; return answer; } 풀이 1. 세로가 더 길거나 가로가 더 길거나 이므로 가로를 기준으로 잡았다. 2. 가로와 세로중 큰 값을 가로에 넣어주고, 작은 값은 세로에 넣어준다. 3. 가로중 제일 큰 값과 세로중 제일 큰 값을 곱해준다. https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테..
[C++] 백준 1932 정수 삼각형
·
Algorithm/Baekjoon
#include #include #include using namespace std; void DP(int n, vector& m); int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n = 0; cin >> n; vector m(n); for (int i = 0; i > temp; m[i].push_back(temp); } } DP(n, m); sort(m[n - 1].begin(), m[n - 1].end()); cout = 2) { m[1][0] += m[0][0]; m[1][1] += m[0][0]; }..