2025. 1. 14. 01:48, 코딩테스트
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;
}
'코딩테스트' 카테고리의 다른 글
백준 [실버4] 15736 청기 백기 (0) | 2025.01.14 |
---|---|
백준 [실버4] 9417 최대 GCD (0) | 2025.01.14 |
백준 [브론즈2] 1978 소수 찾기 (0) | 2025.01.14 |
백준 [실버5] 2563 색종이 (0) | 2025.01.14 |
프로그래머스 [Level1] 과일 장수 (0) | 2025.01.14 |
Comments