C++:: 프로그래머스 < 체육복 >

jahlee·2023년 4월 14일
0

프로그래머스_Lv.1

목록 보기
19/75
post-thumbnail

간단히 체육복 개수를 체크해주고 체육복이 없다면 양옆을 확인해서 가져와 주면 된다. 학생수가 2-30명이어서 배열을 32의 크기로 고정해서 양옆 배열이 존재하는지의 체크를 하지않고 코드를 짜도 괜찮을것 같아보인다.

#include <string>
#include <vector>

using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve)
{
    int answer = 0;
    vector<int> v(n,1);
    for(auto c : reserve) v[c-1]++;//여분++
    for(auto c : lost) v[c-1]--;//도난--
    for(int i=0;i<n;i++)
    {
        if(v[i] == 0)
        {
            if(i > 0 && v[i-1] > 1)
            {//앞번호가 여분이 있으면
                v[i]++; v[i-1]--;
            }
            else if(i < n-1 && v[i+1] > 1)
            {//뒷번호가 여분이 있으면
                v[i]++; v[i+1]--;
            }
        }
    }
    for(auto c : v) if(c) answer++;//체육복있으면
    return answer;
}

0개의 댓글