안녕하세요! 오늘은 폰켓몬과 실패율 두 문제를 풀어보았습니다!
나날이 벡터 사용법에 익숙해지고 있는듯하네요! ㅎㅎ
폰켓몬은 문제자체가 간단하죠? 등장한 종(부여된 숫자)과 size/2중 작은거 고르면 되는 문제였습니다!
실패율은 쪼오오오끔 어려웠는데요! map, pair, sort쓸줄 알면 쉽게 풀수 있는 문제였습니다!(이상하게 해쉬관련은 문제푸는데 오래걸리더라구요 ㅠㅠ 아직 구력이 부족한가 봅니다 ㅠㅠ)
음 cmp를 주석과같이 람다식으로 해도 되는데 보기좋게 함수로 했습니다!
레벨1 문제는 알고리즘을 잘 알고 있다기 보다는 역시 그냥 stl잘쓰느냐 문제가 더 많은듯 합니다!
iterator가 안익숙하시면(익숙해지길 바래요!) for문 주석 쳐놓은 부분처럼 쓰셔도 무관합니다!
그리고 int 연산해서 double로 바뀌는 부분 명시적 형변환 매우 중요합니다! 이거 웹에서 하느라 디버깅이 안되서 고생좀 했습니다 ㅠㅠㅠ
#include <vector>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
int isKind[200001] = {0,};
int size = nums.size();
int res = 0;
for (int i = 0; i < size; i++){
if (isKind[nums[i]] == 0) {
isKind[nums[i]] = 1;
res++;
}
}
answer = (size/2 < res) ? size/2 : res;
return answer;
}
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool cmp(const pair<int,double>& a, const pair<int,double>& b) {
if (a.second == b.second) return a.first < b.first; // index는 오름차순
return a.second > b.second; // 실패율은 내림차순
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
map<int,double> failureRate;
vector<int> challenger(N+2, 0);
vector<int> stage(N+2, 0);
int size = stages.size();
for(int i = 0; i < size; i++) {
stage[stages[i]]++;
for(int j = 1; j <= stages[i]; j++) {
challenger[j]++;
}
}
for(int i = 1; i <= N; i++) {
if(challenger[i] == 0) failureRate[i] = 0;
else failureRate[i] = (double)((double)stage[i])/((double)challenger[i]);
}
vector<pair<int, double>> v(failureRate.begin(), failureRate.end());
sort(v.begin(), v.end(), cmp);
//sort(v.begin(), v.end(), [](pair<int, double> a, pair<int, double> b) {
// if (a.second == b.second) return a.first < b.first; // index는 오름차순
// return a.second > b.second; // 실패율은 내림차순
//});
for (pair<int, double> it : v) answer.push_back(it.first);
//size = v.size();
//for(int i = 0; i < size; i++) {
//answer.push_back(v[i].first);
//}
return answer;
}
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 예산, 두 개 뽑아서 더하기, 2016년 (0) | 2021.12.02 |
---|---|
[프로그래머스] 약수의 개수와 덧셈, 3진법 뒤집기 (0) | 2021.12.01 |
[프로그래머스] 코딩테스트 연습 탐욕법(Greedy) 체육복 (0) | 2021.11.29 |
[프로그래머스] 코딩테스트 연습 완전탐색 모의고사 (0) | 2021.11.29 |
[프로그래머스] 코딩테스트 연습 정렬 K번째수 (0) | 2021.11.27 |