해맑은욱 2019. 9. 5. 16:52
*체육복(탐욕법 Greedy) 
전체 학생의 수 n, 체육복을 도난당한 학생 lost[], 여분 학생 reserve[] 
reserve[] +1-1 번호 학생에게 빌려줄수 있음. 
수업을 들을 수 있는 학생의 최대값 
 
 
#include <iostream>
#include <algorithm>
#include <vector>
 
using namespace std
 
int solution(int n, vector lost, vector reserve) { 
    int answer = 0
     
    vector in; 
    in.assign(n + 21); 
     
    for(int i = 0; i < lost.size(); i++
    { 
        in[lost[i]]--
    } 
    for(int i = 0; i < reserve.size(); i++
    { 
        in[reserve[i]]++
    } 
    for(int i = 1; i <= n; i++
    { 
        if(in[i] == 1 || in[i] == 2
            answer++
        else 
        { 
            if(in[i - 1> 1
            { 
                in[i]++
                in[i - 1]--
                answer++
                continue
            } 
             
            if(in[i + 1> 1
            { 
                in[i]++
                in[i + 1]--
                answer++
                continue
            } 
        }             
    }    
     
    return answer; 
cs