Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
Archives
Today
Total
관리 메뉴

class : Design Code

[프로그래머스][C++] 2019 KAKAO BLIND RECRUITMENT : 실패율 본문

C++/CodingTest

[프로그래머스][C++] 2019 KAKAO BLIND RECRUITMENT : 실패율

클디코 2023. 3. 6. 22:17

https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. first try : vector_pair_sort를 사용하여 문제를 풀었다.

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

// second_내림차순 정렬
bool compare(pair<int, double> a, pair<int, double> b) {
    if(a.second == b.second)
        return a.first < b.first;
	else 
        return a.second > b.second;
}


vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    vector<pair<int,double>> saveResult;

    for(int i=1;i<N+1;i++){
        double curStage=0;
        double curPerNum=0;
    
        for(int j=0;j<stages.size();j++){
            if(stages[j]==i){
                curStage++;
            }
            if(stages[j]>=i){
                curPerNum++;
            }
        }
        if(curPerNum==0)
            saveResult.push_back(make_pair(i,0));
        else
            saveResult.push_back(make_pair(i,curStage/curPerNum));
    }
    
    sort(saveResult.begin(), saveResult.end(), compare);

    for (int i = 0; i < N; i++) {
        answer.push_back(saveResult[i].first) ;
    }

    return answer;
}
테스트 1 통과 (0.01ms, 4.21MB)
테스트 2 통과 (0.06ms, 3.66MB)
테스트 3 통과 (16.85ms, 4.08MB)
테스트 4 통과 (73.65ms, 6.55MB)
테스트 5 통과 (314.33ms, 9.91MB)
테스트 6 통과 (0.25ms, 4.16MB)
테스트 7 통과 (2.58ms, 3.98MB)
테스트 8 통과 (71.97ms, 6.55MB)
테스트 9 통과 (322.27ms, 9.93MB)
테스트 10 통과 (33.02ms, 6.23MB)
테스트 11 통과 (86.94ms, 6.53MB)
테스트 12 통과 (37.09ms, 7.74MB)
테스트 13 통과 (71.76ms, 8.36MB)
테스트 14 통과 (0.02ms, 4.19MB)
테스트 15 통과 (2.06ms, 5.16MB)
테스트 16 통과 (1.00ms, 4.47MB)
테스트 17 통과 (2.21ms, 5.3MB)
테스트 18 통과 (1.20ms, 4.29MB)
테스트 19 통과 (0.27ms, 4.2MB)
테스트 20 통과 (1.77ms, 4.65MB)
테스트 21 통과 (2.83ms, 6.32MB)
테스트 22 통과 (117.03ms, 9.95MB)
테스트 23 통과 (3.90ms, 9.63MB)
테스트 24 통과 (14.15ms, 9.77MB)
테스트 25 통과 (0.02ms, 4.22MB)
테스트 26 통과 (0.01ms, 4.14MB)
테스트 27 통과 (0.01ms, 4.14MB)

 

2.compare 함수에서 레퍼런스 팜조를 했다. 평균적으로 성능이 조오금... 향상된 듯 보인다.

// second_내림차순 정렬
bool compare(pair<int, double> &a, pair<int, double> &b) {
    if(a.second == b.second)
        return a.first < b.first;
	else 
        return a.second > b.second;
}
테스트 1 통과 (0.01ms, 4.18MB)
테스트 2 통과 (0.07ms, 4.19MB)
테스트 3 통과 (15.25ms, 4.23MB)
테스트 4 통과 (76.36ms, 6.55MB)
테스트 5 통과 (290.56ms, 9.98MB)
테스트 6 통과 (0.24ms, 4.12MB)
테스트 7 통과 (2.54ms, 4.21MB)
테스트 8 통과 (81.13ms, 6.5MB)
테스트 9 통과 (301.12ms, 9.86MB)
테스트 10 통과 (30.41ms, 6.21MB)
테스트 11 통과 (74.77ms, 6.56MB)
테스트 12 통과 (33.11ms, 7.74MB)
테스트 13 통과 (72.53ms, 8.4MB)
테스트 14 통과 (0.02ms, 4.19MB)
테스트 15 통과 (1.72ms, 5.25MB)
테스트 16 통과 (1.01ms, 4.52MB)
테스트 17 통과 (2.17ms, 5.1MB)
테스트 18 통과 (1.01ms, 4.44MB)
테스트 19 통과 (0.25ms, 4.19MB)
테스트 20 통과 (1.70ms, 4.88MB)
테스트 21 통과 (2.87ms, 6.27MB)
테스트 22 통과 (118.84ms, 9.93MB)
테스트 23 통과 (3.47ms, 9.63MB)
테스트 24 통과 (14.15ms, 9.71MB)
테스트 25 통과 (0.01ms, 4.19MB)
테스트 26 통과 (0.01ms, 4.2MB)
테스트 27 통과 (0.01ms, 4.12MB)