코딩테스트 준비/프로그래머스

스킬 체크 테스트 Level.3 - xx 회사의 2xN명의 사원들은

MAKGA 2021. 8. 12. 21:50
320x100

https://programmers.co.kr/skill_checks/304247

 

프로그래머스

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

programmers.co.kr

 

1차 - 케이스는 통과했지만 erase 때문에 효율성 통과 못함.

#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    
    sort(A.begin(), A.end(), greater<int>());
    sort(B.begin(), B.end(), greater<int>());
    
    for (int i=0; i<A.size(); ++i)
    {
        int min_diff = A[i];
        
        auto before = B.end();
        for (auto iter = B.begin(); iter != B.end(); ++iter)
        {
            if (*iter > min_diff)
                min_diff = *iter;
            else
                break;
            
            before = iter;
        }
            
        if (min_diff == A[i])
        {
            continue;
        }
        else
        {
            B.erase(before);
            ++answer;
        }
    }
    
    return answer;
}

 

2차 - erase 제거하고 인덱스로만 접근

#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    
    sort(A.begin(), A.end(), greater<int>());
    sort(B.begin(), B.end(), greater<int>());
    
    int a_position = 0;
    int b_position = 0;
    
    for (int i=0; i<A.size(); ++i)
    {
        if (A[a_position] < B[b_position])
        {
            ++b_position;
            ++answer;
        }
        
        ++a_position;
    }
    
    return answer;
}
320x100