프로그래머스 [Level1] 덧칠하기

https://school.programmers.co.kr/learn/courses/30/lessons/161989?language=cpp

 

접근 방식

 

 

 

주어진 입출력 예제 중 하나인데

페인트 칠할때를 굳이 겹치지 않아도 겹쳤을때와 안겹쳤을때의 answer 값이 동일하다고 생각했다

 

 

 

 

따라서

 

1) 페인트를 칠해야하는 곳이면 while문의 index를 m만큼 증가하고 answer를 1 증가 시킨다

2) 페인트를 칠해야하는 곳이 아니라면 index만 1 증가 시킨다

 

라는 논리흐름을 가지고 소스코드를 작성했다

 

 

소스코드

#include <string>
#include <vector>

using namespace std;

int solution(int n, int m, vector<int> section) {
    int answer = 0;
    
    bool paint[100001] = {false};
    
    for(int a : section)
    {
        paint[a] = true;
    }
    
    int i = 1;
    
    while(true)
    {
        if(i > n) break;
        
        if(paint[i] == true)
        {
            i += m;
            answer++;
        }
        else
            i++;
    }
    
    return answer;
}
 

 

 

  Comments