Programmers 42862 체육복

로고 이미지

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42862

나의 풀이

  1. 초기에 학생들에게 각각 한벌의 체육복만 있다고 생각하여 state의 값을 1로 채운다.
  2. 도난 당한 학생들의 state 값을 1씩 빼준다.
  3. 여벌의 체육복을 가져온 학생들의 state 값을 1씩 더해준다.
  4. 체육복이 2벌 있는 학생들은 자신의 앞 번호부터 옷을 빌려준다.

풀이 코드 : 42862 체육복

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer = 0;
    vector<int> state(n+1, 1);
    for(int i=0;i<lost.size();i++){
        state[lost[i]]--;
    }
    for(int i=0;i<reserve.size();i++){
            state[reserve[i]]++;
    }
    for(int i=1;i<=n;i++){
        if(state[i] == 2){
            if(state[i-1] == 0){
                state[i-1]++;
                state[i]--;
            }
            else if(state[i+1] == 0){
                state[i+1]++;
                state[i]--;
            }
        }
    }
    for(int i=1;i<=n;i++) if(state[i] >= 1) answer++;
    return answer;
}

채점결과

42586


© 2020. All rights reserved.

Powered by Hydejack v8.4.0