컴굥일지
[BOJ/백준 1337][C++] 올바른 배열 본문
반응형
문제
https://www.acmicpc.net/problem/1337
문제 내용
올바른 배열을 만들기 위해 추가해야 하는 최소한의 원소의 개수를 구하면 된다.
올바른 배열은 배열 안의 원소 중 5개가 연속인 경우를 말한다.
문제 풀이
처음에는 어떻게 풀어야 할지 고민이 많았다.
일단 배열을 입력받아서 sort()로 정렬을 진행한다.
그 이후, 처음부터 끝까지 반복문을 돌아야 한다.
반복문 안에, 또 다른 반복문이 필요하다.
현재 원소를 포함하여 5개가 연속되는지를 판단하는 것이다.
매 반복문마다 연속되는 것의 개수를 파악하고, 결괏값을 max()로 판단해서 업데이트하면 된다.
결괏값이 만약 5 이상이라면, 한 번에 연속되는 것이 5개 이상이라는 의미이므로 추가해야 할 원소의 개수는 0개이다.
결괏값이 5 미만이면 (5-결괏값)을 출력하면 된다.
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
//입력
int n;
cin >> n;
vector<int> v(100);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
//문제 해결
sort(v.begin(), v.end());
int ans = 1;
for (int i = 0; i < n; i++) {
int k = 1;
for (int j = i + 1; j < i + 5; j++) {
if (v[j] - v[i] < 5 && v[j] - v[i]>0) k++;
}
ans = max(ans, k);
}
//결과 출력
if (ans >= 5) cout << 0;
else cout << 5 - ans << '\n';
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 15312][C++] 이름 궁합 (0) | 2022.03.25 |
---|---|
[BOJ/백준 9076][C++] 점수 집계 (0) | 2022.03.24 |
[BOJ/백준 2011][C++] 암호코드 (0) | 2022.03.22 |
[BOJ/백준 2580][C++] 스도쿠 (0) | 2022.03.21 |
[BOJ/백준 9657][C++] 돌 게임 3 (0) | 2022.03.18 |
Comments