알고리즘/프로그래머스

[프로그래머스] 요격 시스템 C++ 풀이 및 해설

승민아 2024. 4. 4. 10:32

https://school.programmers.co.kr/learn/courses/30/lessons/181188#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 방법

  • e를 기준으로 정렬을 합니다.
  • 순차적으로 방문하며 다음 과정을 거칩니다.
  • 다음 미사일의 s가 현재 요격한 미사일의 e보다 크거나 같다면 새로운 요격 미사일이 필요합니다.
  • 다음 미사일의 s가 현재 요격한 미사일의 e보다 작다면 앞서 요격한 미사일(현재 요격한 미사일) 때 사용한 요격 미사일로 막을 수 있습니다.

 

전체 코드

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

bool comp(vector<int>& a, vector<int>& b) {
    
    if(a[1]<b[1])
        return true;
    else
        return false;
}

int solution(vector<vector<int>> targets) {
    int answer = 0;
    
    sort(targets.begin(), targets.end(), comp);
    int e = 0;
    for(int i=0; i<targets.size(); i++) {
        if(targets[i][0] >= e) {
            e = targets[i][1];
            answer++;
        }
    }
    
    return answer;
}