오늘의 알고리즘

[C++]탐욕법(Greedy) 체육복(프로그래머스 1레벨)

하늘하늘 . 2022. 2. 6. 18:52
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int solution(int n, vector<int> lost, vector<int> reserve)
{
    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] == reserve[j])
            {
                lost.erase(lost.begin() + i);
                reserve.erase(reserve.begin() + j);
                --i;
                --j;
            }
        }
    }
 
    for (int i = 0; i < lost.size(); ++i)
    {
        for (int j = 0; j < reserve.size(); ++j)
        {
            if (lost[i] + 1 == reserve[j])
            {
                lost.erase(lost.begin() + i);
                reserve.erase(reserve.begin() + j);
                --i;
                --j;
            }
 
            else if (lost[i] - 1 == reserve[j])
            {
                lost.erase(lost.begin() + i);
                reserve.erase(reserve.begin() + j);
                --i;
                --j;
            }
        }
    }
 
    return n - lost.size();
}

문제 자체는 별로 안어려웠는데

생각보다 케이스가 많아서 고민 좀 있었다.

처음에는 그냥 sort가 되어있는 줄 알았는데 아니었어가지고 sort를 실행했고

상상도 못했는데 잃어버렸지만 여분의 옷이 있었을 줄이야...