-
백준 16951번 블록 놀이PS 2020. 3. 17. 19:38
https://www.acmicpc.net/problem/16951
16951번: 블록 놀이
욱제는 높이가 1인 블록을 매우 많이 가지고 있고, 블록을 쌓아서 탑 N개를 만들었다. 탑은 일렬로 배열했고, 왼쪽에서부터 i번째 탑의 높이는 Ai이다. 욱제가 가장 좋아하는 정수는 K이다. 따라서, 인접한 두 탑의 높이 차이를 K로 만들려고 한다. 즉, Ai+1 - Ai = K를 만족해야 한다. 욱제가 1분 동안 할 수 있는 작업은 탑 하나를 고르고, 탑에 블록을 더 놓아서 높이를 크게 만드는 것 또는 탑에서 블록을 빼서 높이를 작게 만드는 것이다. 인
www.acmicpc.net
<접근방법>
완전 탐색 문제입니다.
n^2 해도 시간 초과가 나지 않기 때문에 완전 탐색을 할 수 있습니다.
어떤 수를 기준으로 k의 값에 맞추어 모든 값을 변경합니다.
이 행위를 모든 수에 대해서 해줍니다.
반복하며 최소값을 찾아줍니다.
<느낀 점>
<코드>
#include<iostream> #include<algorithm> using namespace std; int n, k, res; int a[1000]; int main() { cin >> n >> k; for (int i = 0; i < n; i++) cin >> a[i]; res = n; for (int i = 0; i < n; i++) { int tres = 0; for (int j = 0; j < n; j++) { int now = k * (j - i) + a[i]; if (now < 1) { tres = n; break; } if (now != a[j]) tres++; } res = min(res, tres); } cout << res << '\n'; return 0; }
반응형'PS' 카테고리의 다른 글
백준 16943번 숫자 재배치 (0) 2020.03.17 백준 16945번 매직 스퀘어로 변경하기 (0) 2020.03.17 백준 16937번 두 스티커 (0) 2020.03.15 백준 16638번 괄호 추가하기2 (0) 2020.03.15 백준 17088번 등차수열 변환 (0) 2020.03.15