본문 바로가기
::public/코딩테스트 풀이

체육복

by 해맑은욱 2019. 9. 5.
*체육복(탐욕법 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

'::public > 코딩테스트 풀이' 카테고리의 다른 글

제일 작은 수 제거하기  (0) 2019.09.05
정수 제곱근 판별  (0) 2019.09.05
H-index  (0) 2019.09.05
가장 큰 수  (0) 2019.09.05
프린터  (0) 2019.09.05