알고리즘
프로그래머스 덧칠하기 C++
긤효중
2023. 3. 3. 13:01
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
스위핑 문제같아서 스위핑을 사용해서 접근했다
처음구간을 section의 처음으로 잡고 끝 구간을 처음 구간 + m -1로 잡는다
그 후 secion배열을 돌면서 만약 section이 끝 구간 보다 길다면,
새로 덧칠해야 하므로 처음 구간과 끝 구간을 각각 갱신해 주었다
#include <string>
#include <vector>
//n미터의 벽
//1부터 N까지 구역
//롤러의 길이는 M임
//3456 -> 1234
//13
using namespace std;
int solution(int n, int m, vector<int> section) {
int answer = 0;
vector<pair<int,int>> v;
//시작과 끝
int start = section[0];
int end = start + m - 1;
v.push_back({start,end});
answer = 1;
for(int i = 0;i<section.size();i++){
if(section[i] > end){
answer++;
start = section[i];
end = start + m - 1;
}
}
return answer;
}