프로그래머스 - 체육복(lv1)

108번뇌·2020년 10월 20일

요즘 게시물 안올리고 문제풀었는데
안빠지고 꾸벅꾸벅 올리도로 하겠다.
탐욕알고리즘 이라는 내용이다.
여기는 김해 출장지 새벽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
뒤배열 --;
현재배열 ++;

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글