정렬
-
예산프로그래머스(Programmers) 2022. 1. 21. 01:15
입출력 예 d budget result [1,3,2,5,4] 9 3 [2,2,3,3] 10 4 입출력 예 설명 입출력 예 #1 각 부서에서 [1원, 3원, 2원, 5원, 4원]만큼의 금액을 신청했습니다. 만약에, 1원, 2원, 4원을 신청한 부서의 물품을 구매해주면 예산 9원에서 7원이 소비되어 2원이 남습니다. 항상 정확히 신청한 금액만큼 지원해 줘야 하므로 남은 2원으로 나머지 부서를 지원해 주지 않습니다. 위 방법 외에 3개 부서를 지원해 줄 방법들은 다음과 같습니다. 1원, 2원, 3원을 신청한 부서의 물품을 구매해주려면 6원이 필요합니다. 1원, 2원, 5원을 신청한 부서의 물품을 구매해주려면 8원이 필요합니다. 1원, 3원, 4원을 신청한 부서의 물품을 구매해주려면 8원이 필요합니다. 1원, ..
-
프로그래머스 H-Index C++프로그래머스(Programmers) 2022. 1. 12. 23:58
#include #include #include using namespace std; int solution(vector citations) { int answer = 0; sort(citations.begin(), citations.end(), greater()); if(citations[0]==0)return answer; for(int i=0; i i)answer++; } return answer; } => 아래 사진을 보며 이해할 수 있습니다. => 우선 내림차순으로 정렬하여 비교가 편하게 합니다. => 각 배열에 있는 값보다(h번이상 인용된 논문)보다 더 많이 인용된 논문들의 갯수가 더 많아야합니다. => 그럴 경우 h의 값이 늘어나게 됩니다. => 규칙을 찾아야 풀 수 있는 문제였습니다.
-
가장 큰 수프로그래머스(Programmers) 2021. 11. 26. 21:43
#include #include #include #include #include using namespace std; bool cmp(string A, string B) { return A+B > B+A; } string solution(vector numbers) { string answer = ""; vector arr; for(int i=0; i string형으로 변환 후, 해당 배열을 큰 순으로 정렬하는 과정이 필요합니다. => cmp 함수를 생성해 해당 배열을 sorting합니다. *** string형태의 숫자이지만 '1'뒤에 '2'가, '2'뒤에 '3'이 있으므로 cmp함수로 비교를 하여도 숫자형의 비교와 다르지 않습니다. => 정렬된 배열은 이미 각 원소중 가장 큰 부분의 수로 정렬되어 있는..
-
백준 10814 - 나이순 정렬백준 algorithm 2020. 7. 23. 20:07
=> pair형 vector 두 개를 사용해서 풀었습니다. => DB속 정규화 개념을 이용해 풀었습니다. => 입력되어지는 순서를 테이블 A와 B가 공유하는 값으로 설정하고, 형 pair를 생성하였습니다. https://codingham.tistory.com/184 백준 11650 - 좌표 정렬하기 => pair와 sort 함수를 사용할 줄 아는지 묻는 문제입니다. => x좌표와 y좌표는 같이 움직여야하는 하나의 객체이므로, 클래스로 표현하여도 되지만, 이미 c++ 에는 pair가 있습니다. => pair를 사용해서 codingham.tistory.com => 좌표 정렬하기에서 사용한 비교 함수를 사용해서 를 정렬한 후, 원하는 값을 출력하였습니다. #include #include #include #in..
-
pair형 vector 정렬하기 / vector<pair< a, b>> sort /compare, greater, less유용한 정보 2020. 7. 23. 19:45
알고리즘 문제를 풀다 보면 언어에 이미 구현되어있는 헤더를 사용하면 편한 것이 많습니다. 그중 많이 쓰이는 것이 pair와 vector입니다. 이 두가지를 혼용할 경우, 정렬해야 할 경우가 심심치 않게 많습니다. 이 방법을 정리해보겠습니다. 1. greater, less sort(v.begin(), v.end()); // 오름차순 sort(v.begin(), v.end(), less()); // 오름차순 sort(v.begin(), v.end(), greater()); // 내림차순 => 기본적으로 greater와 less를 지정해주지 않으면 오름차순으로 정렬됩니다. 오름차순 : 양 또는 수가 차례로 늘어가는 것 , 작은 것부터 큰 것으로 가는 순서 내림차순 : 양 또는 수가 차례로 줄어가는 것, 큰 것..
-
백준 11650 - 좌표 정렬하기백준 algorithm 2020. 7. 23. 19:32
=> pair와 sort 함수를 사용할 줄 아는지 묻는 문제입니다. => x좌표와 y좌표는 같이 움직여야하는 하나의 객체이므로, 클래스로 표현하여도 되지만, 이미 c++ 에는 pair가 있습니다. => pair를 사용해서 푸시면 훨씬 간단하게 해결이 가능합니다. x좌표와 y좌표를 입력받은 후 pair를 작성한 후, vector에 삽입한다. 문제에 주어진대로, x좌표를 먼저 비교하고, y좌표를 비교하여 정렬시킨다. bool cmp(const pair &a, const pair &b) { if (a.first == b.first) { return a.second x좌표가 같으면 y좌표를 확인하는 비교 함수 http..
-
백준 1015 - 수열 정렬백준 algorithm 2020. 7. 15. 23:43
=> pair를 사용하여 문제를 해결하였습니다. => pair.first : 원소 값 => pair.secodn : 원래의 INDEX 값 => 위와 같이 설정을 하고 문제를 풀었습니다. 입력받은 pair형 vector를 sort함수를 하여 정렬시킵니다. 정렬된 배열을 처음부터 읽으며, second 값을 기준으로 새로운 배열의 INDEX에 값을 대입합니다. ans [arr [i]. second]=i; 위와 같은 논리로 코드를 짰습니다. *pair형 배열을 만드는 방법을 찾지 못해, pair형 vector로 답을 생성하였습니다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.ti..
-
백준 10989 - 수 정렬하기 3백준 algorithm 2020. 7. 9. 12:49
=> 구현 카테고리에 있지만, 구현 문제가 아닌 것 같습니다. => vector에 넣어 sort 함수를 사용할 경우 시간제한과 메모리 제한에 걸리게 됩니다. => 해당 문제를 해결하기 위해서는 기존의 문제들과는 다른 시선이 필요합니다. arr [10001]arr [10001] : 주어지는 수는 10000 아래의 수입니다. 그러므로 해당 숫자가 몇 개가 들어가는지 확인하는 배열을 선언합니다. max : 출력할 때, 쓸데 없는 부분까지 탐색하는 문제를 해결하기 위해 max 변수를 선언하여 사용합니다. arr 배열에는 실제 수가 아닌 해당 index 수가 몇 번 나왔는지를 세어줍니다. 0부터 max까지의 수중 1개 이상의 갯수를 가진 index를 차례대로 출력해줍니다. => 위와 같은 방법으로 논리를 구성하여..