※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 21967번 문제인 세워라 반석 위에이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/21967
21967번: 세워라 반석 위에
$1 \leq N \leq 1\,000\,000$ $1 \leq A_i \leq 10$
www.acmicpc.net
주어질 수 있는 Ai의 범위가 1 이상 10 이하로 매우 작다는 점을 관찰하자. 이를 이용하면 각 반석이 가지고 있을 수 있는 수의 범위가 [1,3], [2,4], ..., [8,10]뿐임을 알 수 있다.
각 경우에 대해 직접 배열을 둘러보며 각 범위에 대한 반석의 최대 길이를 알아내자. 그리고 이 경우들 중 가장 긴 반석의 길이를 답으로 출력하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int cnt[9];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
int ans = 0;
while (N--) {
int x; cin >> x;
if (x - 2 > 0) cnt[x - 2]++;
if (x - 1 > 0) cnt[x - 1]++;
cnt[x]++;
for (int i = 1; i < x - 2; i++) {
ans = max(ans, cnt[i]);
cnt[i] = 0;
}
for (int i = x + 1; i < 9; i++) {
ans = max(ans, cnt[i]);
cnt[i] = 0;
}
}
for (int i = 1; i < 9; i++) {
ans = max(ans, cnt[i]);
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 6057 // C++] Building A Fence (0) | 2022.09.23 |
---|---|
[BOJ 21968 // C++] 선린의 터를 (0) | 2022.09.22 |
[BOJ 21966 // C++] (중략) (0) | 2022.09.20 |
[BOJ 21965 // C++] 드높은 남산 위에 우뚝 선 (1) | 2022.09.19 |
[BOJ 21964 // C++] 선린인터넷고등학교 교가 (0) | 2022.09.18 |