본문 바로가기

전체 글199

[프로그래머스] 가장 큰 수 c++ 풀이 숫자로 된 여러 문자열을 이어서 문자열을 만든다. 이때 문자열을 숫자로 볼때 제일 크게 만드는 문제이다. 문자열을 이을때 더 큰수가 될 수 있게 커스텀 비교함수를 만들어준다. 9 , 10이 있다면 910 과 109로 비교해준다. 67 678이 있다면 67678과 67867을 비교해준다. #include #include #include #include using namespace std; vector str_num; bool compare(string a, string b){ return a+b>b+a; } string solution(vector numbers) { string answer = ""; for(auto n : numbers){ str_num.push_back(to_string(n));.. 2024. 1. 16.
[프로그래머스] k번째수 c++ 풀이 주어진 벡터의 일부분을 새로 정렬했을때 특정한 순서에 있는 숫자가 무엇인지 출력하는 문제이다. 일부분에 해당하는 범위를 새로운 벡터에 할당하고 정렬한다음에 특정한 순서에 있는 숫자를 answer에 담았다. #include #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; for(int i=0 ; i 2024. 1. 16.
[프로그래머스] 이중우선순위 c++ 풀이 내림차순으로 정렬되어 최댓값부터 나오는 q 오름차순으로 정렬되어 최솟값부터 나오는 q2 최댓값을 삭제할땐 q에서 pop해주고, 최솟값을 삭제할때 q2에서 pop해준다. 들어온 횟수와 삭제된 횟수가 같다면 q와 q2를 모두 비워준다. (이미 모든 원소가 삭제된 것이므로) #include #include #include #include using namespace std; vector solution(vector operations) { vector answer; int cnt = 0; priority_queueq; priority_queueq2; int re_cnt=0; for(auto op : operations){ if(op[0]=='I'){ cnt++; q.push(stoi(op.substr(2.. 2024. 1. 16.
[프로그래머스] 디스크 컨트롤러 c++ 풀이 현재 시각 기준에서 작업시간이 제일 작은것을 수행하는 것이 총 수행시간에서 이득이다. 1.우선순위큐를 통해 업무시간, 시작시간 순으로 정렬한다. 2. 현재시각에서 처리할수 있는 작업이라면 처리한다. 3.현재 시각에서 처리할 수 없는 작업이라면 다른 큐에 넣어준다. 4. 모든 큐를 검토했을때 시작할 수 있는 큐가 없다면 시간을 +1 해준다. 5. 2 이후에 for문을 나왔다면 다른큐에 있던 작업들을 원래 큐에 다시 담아준다. #include #include #include #include using namespace std; //현재 실행할 수 있는 작업중에 제일 업무시간이 작은 작업을 수행한다. //1. 업무시간 순으로 정렬 //2. 현재 시간과 비교 priority_queue q; priority.. 2024. 1. 14.