알고리즘/프로그래머스
[프로그래머스] 요격 시스템 C++ 풀이 및 해설
승민아
2024. 4. 4. 10:32
https://school.programmers.co.kr/learn/courses/30/lessons/181188#
풀이 방법
- 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;
}