프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 조건
- 벽의 길이는 n미터, 롤러의 길이는 m미터
- 롤러는 벽을 벗어날 수 없음
- section 배열 안에 들어있는 번호들이 최소의 횟수로 전부 칠해져야함
- 이미 칠해진 부분은 또 칠해질 수 있음
문제 풀이
어차피 이미 칠해진 부분은 또 칠할 수 있기 때문에 n은 무시하였다.
- 어디까지 칠해졌는지 확인하기 위해 paintedArea라는 변수를 선언
- paintedArea에는 칠해지지않은 section[i]에 롤러의 길이 - 1을 더함으로써 몇 번째 벽까지 칠했는지 저장 후 answer++
- paintedArea가 그 다음 section[i]보다 크거나 같다면 이미 해당 구역까지는 칠해졌으므로 continue
- paintedArea가 section[i]의 마지막 원소보다 크거나 같다면 다시 칠해야하는 구역을 전부 칠한 것이므로 break
- answer 리턴
#include <string>
#include <vector>
using namespace std;
int solution(int n, int m, vector<int> section) {
int answer = 0;
int sectionLength = section.size();
int paintedArea = 0;
for(int i = 0;;i++) {
if(paintedArea >= section[sectionLength - 1]) break;
if(paintedArea >= section[i]) continue;
paintedArea = section[i] + m - 1;
answer++;
}
return answer;
}
'프로그래머스 > 1레벨' 카테고리의 다른 글
[프로그래머스/C++] 바탕화면 정리 (0) | 2023.07.03 |
---|---|
[프로그래머스/C++] 달리기 경주 (0) | 2023.06.29 |
[프로그래머스/C++] 추억 점수 (0) | 2023.06.29 |
대충 만든 자판/C++ (0) | 2023.02.28 |
카드 뭉치/C++ (0) | 2023.02.28 |