
요즘 게시물 안올리고 문제풀었는데
안빠지고 꾸벅꾸벅 올리도로 하겠다.
탐욕알고리즘 이라는 내용이다.
여기는 김해 출장지 새벽3시 살아있다..
#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> lost, vector<int> reserve) {
int answer = 0;
vector <int> answerContainer(n,1);//모든 사이즈 1++로 채운다
for(int i; i<lost.size(); i++)//lost에 적힌것 1--빼준다
{
answerContainer[lost[i]-1]--;
}
for(int i; i<reserve.size(); i++)//lost에 적힌것 1++빼준다
{
answerContainer[reserve[i]-1]++;
}
for(int i=0; i<answerContainer.size(); i++)
{
if(answerContainer[i]==0)
{
if((i!=0)&&(answerContainer[i-1]==2))
{
answerContainer[i-1]--;
answerContainer[i]++;
}
else if((i!=answerContainer.size()-1)&&(answerContainer[i+1]==2))
{
answerContainer[i+1]--;
answerContainer[i]++;
}
}
}
for(int i=0; i<answerContainer.size(); i++)
{
if(answerContainer[i]!=0)
{
answer++;
}
}
return answer;
}
다른사람들 코드보니 auto에 대해 좀 자유롭게 쓸 필요성을 느꼇다.
1. 모든사이즈 1++;
2. lost에 적힌 베열 1--;-> 0
3. reserve에 적힌 배열 1++; -> 2
4. 만약 전체 배열의 컨테이너가 0이면,
ㄱ.[앞에서 밀어내기]
1. i!=0 && 배열 [앞]==2
앞배열 --;
현재배열 ++;
ㄴ.[뒤에서 밀어내기]
1. i!=전체배열사이즈 -1 && 배열[뒤]==2
뒤배열 --;
현재배열 ++;