프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이과정
제한사항에 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있다고 적혀있다.
그러므로 도난은 0벌, 여벌은 2벌이라고 정해주지 않고
도난당했으면 1을 빼주고, 여벌이 있다면 1을 더해주는 식으로 구현했다.
#include <string>
#include <vector>
using namespace std;
int num[31];
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
// 체육복의 수를 정해주는 부분
for(int i = 1; i <= n; i++){
num[i] = 1;
}
for(int i = 0; i < lost.size(); i++){
num[lost[i]]--;
}
for(int i = 0; i < reserve.size(); i++){
num[reserve[i]]++;
}
// 앞 뒤에 여벌 체육복(2)이 있는 친구
for(int i = 1; i <= n; i++){
if(num[i] == 0){
if(num[i - 1] == 2){
num[i]++;
num[i - 1]--;
}
else if(num[i + 1] == 2){
num[i]++;
num[i + 1]--;
}
}
}
for(int i = 1; i <= n; i++){
if(num[i] > 0) answer++;
}
return answer;
}