일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 방송통신대학교
- 기본
- 마니토바
- 선형대수
- mpnp
- 코딩테스트
- cpp
- EOI
- Plotting
- C++
- 딥러닝
- MATLAB
- LV1
- 방통대
- Deep learning
- zeros
- omscs
- 프로그래머스
- 온라인석사
- leetcode
- 조지아텍
- 주정부이민
- LAA
- 알고리즘
- 개발자
- 컴퓨터과학과
- 매트랩
- 캐나다 영주권
- 머신러닝
- machine learning
Archives
- Today
- Total
Krononberg
프로그래머스) 실패율 c++ 본문
배운 점 :
1) pair의 second value로 sorting하고 싶을 때는, sort parameter에 cmp함수(외부에 작성)를 추가.
2) pair를 대입하는 STL : vector.emplace_back( i , value) 주의할점은 i는 iterator성격의 값만 넣어야 함. (링크 참고)
https://www.geeksforgeeks.org/vector-emplace-function-in-c-stl/
3) 0으로 나누면 오류남. 항상 체크할 것.
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
bool cmp(const pair<int,float>& a, const pair<int,float>& b) {
if (a.second == b.second) return a.first < b.first;
return a.second > b.second;
};
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int,float>> x;
float cnt = 0;
int leftover = stages.size();
sort(stages.begin(), stages.end());
for (int i = 1; i <= N; i++) {
for (int j = 0; j < stages.size(); j++) {
if (stages[j] == i) cnt++;
else if (stages[j] > i) break;
}
if(leftover ==0) x.emplace_back(i, 0);
else x.emplace_back(i, cnt / leftover);
leftover -= cnt;
cnt = 0;
}
sort(x.begin(), x.end(), cmp);
for (int i = 0; i < x.size(); i++) answer.push_back(x[i].first);
return answer;
}
'개발 로그 > 알고리즘' 카테고리의 다른 글
프로그래머스) 문자열 다루기 기본 c++ (0) | 2021.09.03 |
---|---|
프로그래머스) 3진법 뒤집기 c++ (0) | 2021.09.03 |
프로그래머스) 행렬의 덧셈. 파이썬 (0) | 2021.09.01 |
프로그래머스) 찾아라 프로그래밍 마이스터 c++ (0) | 2021.08.31 |
프로그래머스) 완주하지못한 선수 c++ (0) | 2021.08.27 |