C++/programmers 코딩테스트(level 1) C++

[C/C++] programmers Level 1 체육복

CE : 하랑 2023. 10. 31. 21:04

 

 

 

코드

 

#include <vector>
#include <algorithm> // sort()

using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve) {
    
    for(int i=0;i<lost.size();i++){
        for(int j=0;j<reserve.size();j++){
            if(lost[i]==reserve[j]){ // lost의 값과 reserve의 값이 같은 경우에는 vector에서 제거
                lost.erase(lost.begin()+i);
                reserve.erase(reserve.begin()+j);
                i=i-1; // lost 제거한 값에 맞게 i값 조정
                j=j-1; // reserve 제거한 값에 맞게 j값 조정
                break;
            }
        }
    }
    
    sort(lost.begin(),lost.end()); // 오름차순 정렬
    sort(reserve.begin(),reserve.end()); // 오름차순 정렬
    
    for(int i=0; i<lost.size();i++){
        for(int j=0; j<reserve.size();j++){
            if(lost[i]-1==reserve[j] || lost[i]+1 ==reserve[j]){ // +1, -1 연산 후 같은 경우 vector에서 제거
                lost.erase(lost.begin()+i); 
                reserve.erase(reserve.begin()+j);
                j=j-1; // lost 제거한 값에 맞게 i값 조정
                i=i-1; // reserve 제거한 값에 맞게 j값 조정
                break;
            }
        }
    }
    
    int answer=n-lost.size(); // n에서 lost에 남은 체육복을 도난당한 학생의 수를 빼면 결과 값
    
    return answer;
}