Algorithm/백준과 프로그래머스

[C++] 프로그래머스 LV1. 체육복

young_3060 2024. 1. 5. 22:58
728x90

 

 

#include <string>
#include <vector>

using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer = 0;
    int res[31]; // 전체 학생 유니폼 리스트
    fill_n(res, n+1, 0); // 0으로 초기화

    for(auto i : reserve) res[i] += 1; // 여분있는 사람 +1
    for(auto i : lost) res[i] -= 1; // 잃어버린 사람 -1, 여기서 여분 있는데 잃어버린 사람까지 처리됨

    for(int i=1; i<=n; i++) { // 학생 수만큼 loop
        if(res[i]==-1) { // 잃어버렸을 때
            if(res[i-1]==1) res[i-1] = res[i] = 0; // 여분이 있는 사람이 앞번호인 경우 빌려주고 둘다 0처리
            else if(res[i+1] == 1) res[i+1] = res[i] = 0; // 여분 있는 사람이 뒷번호인 경우 빌려주고 둘다 0처리
        }
    }

    for(int i=1; i<=n; i++) {
        if(res[i] != -1) answer++; // -1이면 체육복을 못빌렸으므로, 빼고 카운팅
    }
    
    return answer;
}
728x90