지우너
[프로그래머스 Lv.0] 겹치는 선분의 길이 C++ 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120876
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> lines) {
int answer = 0;
vector<pair<int,int> > v;
for(size_t i=0; i<lines.size(); ++i){
v.push_back({lines[i][0], 1}); // 시작점
v.push_back({lines[i][1], -1}); // 끝점
}
sort(v.begin(), v.end());
int overlap_cnt=0;
int prev = v[0].first;
for(size_t i=0; i<v.size(); ++i){
// 선분이 2개 이상 겹친 구간
if(overlap_cnt>=2){
answer += v[i].first-prev;
}
overlap_cnt+=v[i].second;
prev =v[i].first;
}
return answer;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 수영장 효율적으로 활용하기 C++ (0) | 2024.09.05 |
---|---|
[코드트리] 폭탄 떨구기 C++ (0) | 2024.09.04 |
[코드트리] 양쪽 모두 존재하는 구간 C++ (0) | 2024.09.02 |
[코드트리] 격자 칠하기2 C++ (0) | 2024.08.31 |
[코드트리] 번호표를 든 N명의 사람 C++ (0) | 2024.08.31 |