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