문제링크 : https://www.acmicpc.net/problem/14465
#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
int n, k, b, cnt, result = 987654321;
int arr[100001];
bool check[100001];
int main()
{
fastio;
cin >> n >> k >> b;
for (int i = 0; i < b; i++)
{
cin >> arr[i];
if (!check[arr[i] - 1]) //고장난 값을 true로
{
check[arr[i] - 1] = true;
}
}
for (int i = 0; i < n - k + 1; i++)
{
cnt = 0;
for (int j = i; j < k + i; j++) //연속한 신호등 수 만큼 탐색
{
if (check[j]) //고장났으면 카운트 증가
{
cnt++;
}
}
result = min(result, cnt); //가장 적게 고장난 경우 저장
}
cout << result;
return 0;
}
bool 배열의 디폴트가 false이기에 고장난 값을 입력받고 해당 bool 배열의 값을 true로 처리했다.
이후 이중반복문을 통해서 연속한 신호등 수만큼 탐색하여 여기서 고장난 신호등 수 만큼 카운트를 했다.
카운트를 여러번 하므로, 매 반복문마다 0으로 초기화하고 가장 적게 카운트된 값을 result에 저장하여 출력했다.
'백준 > 실버' 카테고리의 다른 글
[백준 21314번] 민겸 수 (C++) (0) | 2023.02.12 |
---|---|
[백준 17204번] 죽음의 게임 (C++) (0) | 2023.02.11 |
[백준 9417번] 최대 GCD (C++) (0) | 2023.02.09 |
[백준 16564번] 히오스 프로게이머 (C++) (0) | 2023.02.08 |
[백준 9934번] 완전 이진 트리 (C++) (0) | 2023.02.07 |