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
'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글
[C++] 프로그래머스 LV1. 가장 많이 받은 선물 (Kakao 기출문제) (0) | 2024.01.17 |
---|---|
[C++] 프로그래머스 LV2. 조이스틱 (0) | 2024.01.13 |
[C++] 9251. LCS (1) | 2023.11.29 |
[C++] 15787. 기차가 어둠을 헤치고 은하수를 (1) | 2023.11.29 |
[C++] 1991. 트리 순회 (0) | 2023.11.28 |