https://school.programmers.co.kr/learn/courses/30/lessons/161989
스위핑 문제같아서 스위핑을 사용해서 접근했다
처음구간을 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;
}
'알고리즘' 카테고리의 다른 글
위상정렬(Topological sort) (0) | 2023.05.29 |
---|---|
이분 그래프와 판별법 (2) | 2023.03.15 |
프로그래머스 뒤에 있는 큰 수 찾기 C++ (0) | 2023.01.31 |
프로그래머스 튜플 C++ (0) | 2023.01.29 |
프로그래머스 뉴스 클러스터링 C++ (0) | 2023.01.16 |