프로그래머스/lv1/161989. 덧칠하기

SITY·2023년 9월 18일
0

Cpp_Algorithm

목록 보기
7/43

업로드중..

#include <string>
#include <vector>
#include <memory.h>
using namespace std;

int solution(int n, int m, vector<int> section) {
    int* wall = new int[n + 1];
    memset(wall, 0, sizeof(int) * n + 1);

    for (int i = 0; i < section.size(); i++)
    wall[section[i]] = 1;

    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        if (wall[i]) {
            for (int j = i; j < i + m; j++) {
                if (j > n) break;
                wall[j] = 0;
            }
            cnt++;
        }
    }
    return cnt;
}

인덱스가 1부터 시작하니 n+1 크기의 동적배열 wall을 생성하고, wall에 모든 원소를 0으로 초기화 했다.
그 다음 반복문을 돌면서 section에 나타난 페인트가 벗겨진 곳을 1로 설정하고,
마지막 반복문을 돌면서 만약 빈 곳이 있다면 내부루프로 벽 크기의 인덱스를 벗어나지 않게 0으로 만들며 페인트칠을 해준다. 그 후 cnt를 1씩 올리고 return해준다.

profile
·ᴗ·

0개의 댓글